gpt4 book ai didi

javascript - 是否可以使用 `array.indexOf` 作为 `searchElement` 传递一个对象?

转载 作者:行者123 更新时间:2023-11-30 12:54:54 25 4
gpt4 key购买 nike

是否可以使用 array.indexOf 作为 searchElement 对象传递。在我的示例中,结果为 -1。

   var myArray = [{id: 1, name: 'milan'}, {id: 2, name: 'rome'}];
var idx = myArray.indexOf({id: 1, name: 'milan'});

如果不可能,有什么更快的替代方法?也许使用 array.filter 并作为索引的结果值返回?

最佳答案

不,你不能使用 indexOf为此:它使用 strict equality用于比较,因此:

console.log({id: 1, name: 'milan'} === {id: 1, name: 'milan'}); // false

因为它们是两个不同的对象,包含相同的属性。

在不久的将来,您将能够使用新的 ES6 数组方法,如 findfindIndex(例如,它们已在 Firefox Nightly 中实现) :

var myArray = [{id: 1, name: 'milan'}, {id: 2, name: 'rome'}];
var idx = myArray.findIndex(({id}) => id === 1); // `idx` will be `0`
var item = myArray.find(({id}) => id === 1); // `item` will contains {id: 1, name: 'milan'}

与此同时,您必须手动执行此操作;如果您想比较所有属性,最好创建一个 deepEqual 函数或类似函数。

关于javascript - 是否可以使用 `array.indexOf` 作为 `searchElement` 传递一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19564421/

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