我有三个数组填充了JavaScript中的对象,我已将其放入多维数组中,以便获得所有三个对象的所有可能组合,以创建一组规则'。然后在代码中我希望能够提取这些对象的属性,但是当我尝试所有我似乎能够得到的是字符串" [object]"而不是实际的对象本身。
这是数组的组合方式:
var allArrays = [settings.serviceLevels, settings.serviceDays, settings.services];
function allPossibleCases(arr) {
if (arr.length === 1) {
return arr[0];
} else {
var result = [];
var allCasesOfRest = allPossibleCases(arr.slice(1));
for (var i = 0; i < allCasesOfRest.length; i++) {
for (var j = 0; j < arr[0].length; j++) {
result.push(arr[0][j] + allCasesOfRest[i]);
}
}
return result;
}
}
var uncheckedRules = allPossibleCases(allArrays);
我需要能够从settings.serviceLevels,settings.serviceDays和settings.services中获取属性 - 我可以找到使用常规数组而不是对象执行此操作的问题 - 这是否可行或者我是否已经使用它到了我失去财产的程度?
答案 0 :(得分:0)
不确定我明白你想要什么。但这是一个递归函数,它将在数组中存储另一个数组中包含的对象的属性:
function listProps(object, result) {
// for each property of the object :
for (objectProperty in object) {
// if it's an object, recursive call :
if (typeof object[objectProperty] === 'object') {
listProps(object[objectProperty], result);
} else { // otherwise, push it into the result array :
result.push(object[objectProperty]);
}
}
}
var allArrays = [settings.serviceLevels, settings.serviceDays, settings.services];
var result = [];
listProps(allArrays, result);
result
数组应该列出三个对象settings.serviceLevels,settings.serviceDays,settings.services及其子节点中的每个属性(如果它们本身包含任何对象)。