gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:04:43 25 4
gpt4 key购买 nike

例如,一个名为 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com