javascript - indexOf() 当数组元素是对象时 (javascript)

标签 javascript arrays indexof

例如,一个名为 arrayElements 的数组类型的变量包含:
[{id:1, value:5},{id:2, value:6},{id:3, value:7},{id:4, value:8}].

除了使用循环之外,如何获取 id === 3(第 3 个元素)的数组元素在 arrayElements 变量中的位置?

谢谢。

最佳答案

你必须在一个点上循环。但是您可以将其抽象为看起来没有在循环

function indexOfCallback(arr, callback, startIndex) {
    if (typeof startIndex == 'undefined') {
        startIndex = 0;
    }
    for(var i=startIndex; i < arr.length; i ++) {
        if (callback(arr[i])) {
            return i;
        }
    }
    return -1;
}

var array = [{id:1, value:5},{id:2, value:6},{id:3, value:7},{id:4, value:8}];
// Search on id === 3
console.log(indexOfCallback(array, function(obj){
    return obj.id === 3;
}));
// Search on value === 6
console.log(indexOfCallback(array, function(obj){
    return obj.value === 6;
}));

正如 Anthony 所提到的,这是针对 ECMAScript 6 提出的。这是更完整的 polyfill https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex

if (!Array.prototype.findIndex) {
  Array.prototype.findIndex = function(predicate) {
    if (this == null) {
      throw new TypeError('Array.prototype.find called on null or undefined');
    }
    if (typeof predicate !== 'function') {
      throw new TypeError('predicate must be a function');
    }
    var list = Object(this);
    var length = list.length >>> 0;
    var thisArg = arguments[1];
    var value;

    for (var i = 0; i < length; i++) {
      value = list[i];
      if (predicate.call(thisArg, value, i, list)) {
        return i;
      }
    }
    return -1;
  };
}
console.log(array.findIndex(function(obj){
    return obj.id === 3;
}));

关于javascript - indexOf() 当数组元素是对象时 (javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26738756/

相关文章:

c# - 将 LastIndexOf 和 Substring 与数组一起使用

java - 为什么使用增强的 for 循环来实现冒泡排序会给我 ArrayIndexOutOfBoundsException?

python - 数组不会在 python 中分配超过 8 个字符

c# - 使用正则表达式比使用 IndexOf 更快吗?

javascript - 从作用域调用函数的简写

javascript - 你如何在 JavaScript 中的不同基数之间转换数字?

javascript - Jquery调用javascript函数

javascript - 当页面的一部分被溢出 CSS 隐藏时,如何将图像置于浏览器中心?

javascript - 连续两次使用 array.pop() 获取倒数第二个元素

javascript - indexOf 无法在 Google Apps 脚本中工作