const nonsense = [{x: '1'}];
console.log(nonsense.indexOf({x: '1'})); // prints -1我不明白为什么要打印-1,即使指定的对象明显存在于数组中。
发布于 2020-06-17 10:54:22
对象是通过引用来比较的,而不是通过它们的值来比较的。
nonsense数组中的对象是一个与传递给indexOf函数的对象不同的对象,尽管它们具有相同的键值对。
下面的代码将为您提供正确的索引
const obj = {x: '1'};
const nonsense = [obj];
console.log(nonsense.indexOf(obj));
发布于 2020-06-17 10:56:28
在javaScript中,对象是通过引用而不是通过值进行比较的。
const nonsense = [{x: '1'}];
console.log(nonsense.map(o => o.x).indexOf('1'));
或者,对于更大的数组,可能具有更好的性能:
console.log(nonsense.findIndex(o => o.x ==='1'));https://stackoverflow.com/questions/62427274
复制相似问题