gpt4 book ai didi

javascript - 在对象数组中查找完全相同对象的索引的最佳方法(键是动态的)

转载 作者:行者123 更新时间:2023-11-29 14:40:18 29 4
gpt4 key购买 nike

假设我每次都动态加载了具有不同属性和该类型对象数组的对象:

var obj = {name: someValue, key: someValue2};
var objArray = [{name: someValue, key: someValue2},{name: someValue, key: someValue3}];

我想找到包含 objobjArray 的索引。 objArray 的某些元素可以具有相同的 name 属性但具有不同的 key 属性,因此通过 obj.name 搜索不是一个选项。到目前为止,我想出了这个解决方案:

var keys = [];

_.forEach(Object.keys(obj), function(key) {
keys.push(key, obj[key])
});

var index = _.findIndex(objArray, keys);

这一切都很好,但我正在寻找性能更好的东西,因为这个 objArray 可能非常大。

所以问题是:是否有更好的方法来查找对象数组中完全相同对象的索引?

更新:我忘了提到键的名称没有指定,每次都可能不同。

最佳答案

使用Array.prototype.findIndex() ,这仅在您事先知道要检查的属性并在 .findIndex() 的回调中对规则进行硬编码时才有效。

一个例子:

var obj = {
name: 'someValue',
key: 'someValue3'
};
var objArray = [{
name: 'someValue',
key: 'someValue2'
}, {
name: 'someValue',
key: 'someValue3'
}];
var index = objArray.findIndex(function(item, index) {
return (item.name === obj.name) && (item.key === obj.key) ? true : false;
});
console.log('index is: ' + index);

下面是另一种方法,基本上它采用 JavaScript 值(您的初始对象)并转换为 JSON 字符串,然后使用该字符串在您的数组中进行搜索。该脚本无需任何递归即可运行,您的对象具有任意数量的嵌套属性。您的属性的顺序在此脚本中很重要,因为转换为字符串时会考虑到这一点。

关于“最佳方式”很难回答,具体取决于最佳方式的参数。如果考虑性能,则应考虑对脚本进行基准测试并使用一些真实数据进行测试。

var obj = {
name: 'someValue',
key: 'someValue2'
},
objArray = [{
name: 'someValue',
key: 'someValue2'
}, {
name: 'someValue',
key: 'someValue3'
}];

var str = JSON.stringify(obj),
index = objArray.findIndex(function(item, index) {
return str === JSON.stringify(item) ;
});
console.log('index is: ' + index);

关于javascript - 在对象数组中查找完全相同对象的索引的最佳方法(键是动态的),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39204826/

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