如果我有一个带有随机密钥的嵌套对象数组,我怎么能找到知道随机密钥的对象的索引?
例如,具有键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},
},
]
你也可以使用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()。
假设该数组的结构有效且每个对象只有一个键值:
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;
}
}
.as-console-wrapper { max-height: 100% !important; top: 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