如果我有一个带有随机密钥的嵌套对象数组,如何找到知道随机密钥的对象的索引?
例如关键字Jas9d8d的对象索引? (答案是0)
const myArray = [
Jas9d8d:{
151231230123:{
key1:value
key2:value
key3:value},
},
gkdkaksd9d:{
151231230123:{
key1:value
key2:value
key3:value},
},
hdhfe89hef:{
151231230123:{
key1:value
key2:value
key3:value},
},
]
答案 0 :(得分:2)
您也可以使用find()。
const myArray = [{ Jas9d8d: { '151231230123': { key1: 'value', key2: 'value', key3: 'value' } } }, { gkdkaksd9d: { '151231230123': { key1: 'value', key2: 'value', key3: 'value' } } }, { hdhfe89hef: { '151231230123': { key1: 'value', key2: 'value', key3: 'value' } } }];
const myObj = myArray.find(x => x.hasOwnProperty("Jas9d8d")) || 0;
// Returns the object that satisfies the test base on the key provided. If not, returns 0.
var myObjIndex = myArray.indexOf(myObj);
请注意,IE中不支持Array.find()。
答案 1 :(得分:1)
假设该数组的结构有效且每个对象只有一个键值:
const myArray = [{ Jas9d8d: { '151231230123': { key1: 'value', key2: 'value', key3: 'value' } } }, { gkdkaksd9d: { '151231230123': { key1: 'value', key2: 'value', key3: 'value' } } }, { hdhfe89hef: { '151231230123': { key1: 'value', key2: 'value', key3: 'value' } } }];
for (var i = 0; i < myArray.length; i++) {
if (Object.keys(myArray[i]).pop() === 'Jas9d8d') {
console.log(`Found at index ${i}`);
break;
}
}
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
答案 2 :(得分:0)
findIndex完全是为了这个:
var i = myArray.findIndex(x => x.hasOwnProperty("Jas9d8d")); // 0
如果引擎不支持findIndex
,则无处不在:
var i = myArray.length-1;
for (; i >= 0; --i)
if (myArray[i].hasOwnProperty("Jas9d8d"))
break;
console.log(i); // 0