- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否可以使用 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 数组方法,如 find
和 findIndex
(例如,它们已在 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/
我对Mac上当前版本的Chrome 37.0.2062.94中数组indexOf的不可预测的结果感到困惑。当使用视频元素的时间码创建 searchElement 时,array.indexOf 有时无
老实说,我不知道我的设置是否有问题,或者这是否是 typescript 功能。在以下示例中: type AllowedChars = 'x' | 'y' | 'z'; const exampleArr
是否可以使用 array.indexOf 作为 searchElement 对象传递。在我的示例中,结果为 -1。 var myArray = [{id: 1, name: 'milan'},
我有一个对象,其中每个字段都是字符串数组。我还有一个字符串变量,它只能具有基于对象中数组值的值。 现在我想检查这个字符串属于哪个数组(哪个对象字段)。我通过简单地使用 includes() 来做到这一
我是一名优秀的程序员,十分优秀!