如果我有这样的数组:
var array1 =
[
{"phraseId":"abc",
"keyword":"bb",
"posId":1},
{"phraseId":"def",
"keyword":"bb",
"posId":1},
]
我怎样才能找到具有" def"的短语Id的对象?有第二名?
答案 0 :(得分:6)
您可以映射对象并仅返回目标字段,然后使用内置的indexOf
来获取位置:
array1.map(item => item.phraseId).indexOf('def')
答案 1 :(得分:5)
使用原生JavaScript findIndex
方法。
var array1 = [{
"phraseId": "abc",
"keyword": "bb",
"posId": 1
}, {
"phraseId": "def",
"keyword": "bb",
"posId": 1
}, ];
var pos = array1.findIndex(function(v) {
// set your condition for finding object
return v.phraseId == 'def';
// add `1` since you want to count from `1`
}) + 1;
console.log("Position of the object " + pos);
var array1 = [{
"phraseId": "abc",
"keyword": "bb",
"posId": 1
}, {
"phraseId": "def",
"keyword": "bb",
"posId": 1
}, ];
var pos = array1.findIndex(v => v.phraseId == 'def') + 1;
console.log("Position of the object " + pos);
答案 2 :(得分:1)
它的工作原理如下:
array1.forEach((elem, index) => {if (elem.phraseId === "def")
console.log("index = " + index);
});
答案 3 :(得分:1)
假设您的密钥已知(您知道自己总是在寻找phraseId
),那么如果使用"那么您可以使用正常的for
循环遍历数组。传统" JS,如果您使用的是ES6,则使用forEach
。这是简单的for
实现。
for (var i = 0; i < array1.length; i++ ){
if(array[i].phraseId === 'def') {
// we know "i" is the index, so do something...
}
}
为了使它更通用,你可以在任何数组中搜索任何键,创建一个返回索引的函数:
function whatIndex (arr, key, val) {
for (var i = 0; i < arr.length; i++) {
if( arr[i][key] === val ) {
return i;
}
}
}