我有以下代码:
var person = { name: "Nicholas" };
var people = [{ name: "Nicholas" }];
var morePeople = [person];
alert(people.indexOf(person)); //-1
alert(morePeople.indexOf(person)); //0
我不知道为什么当人们是一个数组并包含时,第一个警报为什么给出-1(未找到) { name: "Nicholas" }
因为虽然两个对象包含相同的信息,但它们不是同一对象。例如:
var nick = { name: 'Nick' };
var nick2 = { name: 'Nick' };
console.log(nick === nick2); // false
console.log(nick === nick); // true
这是正确的,因为Javascript不会在对象之间进行按属性的比较来确定相等性。它仅检查“这在字面上确实是与另一个对象完全相同的对象吗? ”如果且仅当为真时,在比较两个对象时您将得到一个真实的结果。
.indexOf
使用此类比较来确定数组中是否有任何对象或值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句