假设与形式的父容器对象:
var parentObj =
{
obj: {
key: value,
key2: value,
}
obj2: {
key3: value
}
...
}
此外,如果我们要包括的每个子键只有一次, 我们
var objNameArray = ['obj','obj2','objN'];
var allValues = [];
var usedKeys = {};
for(var i = 0; i < objNameArray.length; ++i){
// If the parent object does not have a matching sub-object, skip to the
// next iteration of the loop
if(!parentObj[objNameArray[i]]) {
continue;
}
var currentObj = parentObj[objNameArray[i]];
var subKeys = Object.keys(currentObj);
for(var j = 0; j < subKeys.length; ++j) {
if(usedKeys[subKeys[j]]) {
continue;
}
usedKeys[subKeys[j]] = true;
allValues.push(currentObj[subKeys[j]]);
}
}
所有值从所有的按键在每个子对象中将会出现在数组allValues
中,并且通过调用Object.keys(usedKeys);
可以获得每个子对象的所有键。请注意,如果子对象也可以有子对象,则需要调整此策略以支持递归。
循环数组,使用数组键和*初始对象*属性名称。 –
如果您只关心按键,无论发生什么值,都可以将这些对象合并在一起,然后遍历该对象的按键。 –
什么是初始对象属性名称? – Himmators