获取包含对象的数组的索引的最佳方法是什么?
想象一下这种情况:
var hello = {
hello: 'world',
foo: 'bar'
};
var qaz = {
hello: 'stevie',
foo: 'baz'
}
var myArray = [];
myArray.push(hello,qaz);
现在,我想拥有indexOf
对象,该对象的hello
属性为'stevie'
,在本示例中为1
。
我是JavaScript的新手,我不知道是否有一个简单的方法,或者是否应该构建自己的函数来做到这一点。
#1楼
或原型:
Array.prototype.indexOfObject = function arrayObjectIndexOf(property, value) {
for (var i = 0, len = this.length; i < len; i++) {
if (this[i][property] === value) return i;
}
return -1;
}
myArr.indexOfObject("name", "stevie");
#2楼
我认为您可以使用map函数在一行中解决它:
pos = myArray.map(function(e) { return e.hello; }).indexOf('stevie');
#3楼
我喜欢Pablo的回答,但是Array#indexOf和Array#map并非在所有浏览器上都起作用。 下划线将使用本机代码(如果可用),但也具有后备功能。 另外,它具有可实现Pablo匿名地图方法的功能的pluck方法。
var idx = _.chain(myArray).pluck("hello").indexOf("Stevie").value();
#4楼
我将更喜欢使用findIndex()
方法:
var index = myArray.findIndex('hello','stevie');
index
将为您提供索引号。
#5楼
您可以创建自己的原型来执行此操作:
就像是:
Array.prototype.indexOfObject = function (object) {
for (var i = 0; i < this.length; i++) {
if (JSON.stringify(this[i]) === JSON.stringify(object))
return i;
}
}
来源:oschina
链接:https://my.oschina.net/stackoom/blog/3160818