仅使用嵌套对象字面量填充数组
fill an array only with nested object literals
在这段代码中,我打算在我的嵌套对象的父 object.One 中找到所有嵌套对象文字,它有一个名为 places 的数组作为它自己的数组 property.I 有一个名为 [=12] 的递归函数=] 它遍历每个 属性 并在父对象中找到嵌套的对象文字。
在我的 Parent 对象中有三个嵌套对象 literals.One 其中有一个数组 property.So container
数组应该存储所有找到的嵌套对象文字必须有 3 indexes.But 数组位置也包含为容器的第四个索引 array.I 已找到
typeof(array)=='object' returns true;
arr instanceof Object also returns true;
如何防止将 place 数组与其他对象文字一起插入容器数组?
var getValue;
var parentObj = {
parentProp: 10,
childObj: {
childProp: 20,
grandChildObj: {
y: {
z:'lol',
places:['newyork','canada','dhaka']
}
}
}
}
var arr=[];
var container=[];
var count=0;
function getObjNum(obj){
var prop=Object.getOwnPropertyNames(obj);
for(i=0;i<prop.length;i++){
if(typeof(obj[prop[i]])=='object'){
container.push(obj[prop[i]]);
count++;
getObjNum(obj[prop[i]]);
}
}
}
getObjNum(parentObj);
console.log(container);
正如评论中指出的,您可以使用 instanceof Array
来检查对象是否为数组,如下所示:
function getChildObjects(obj, returnArr) {
return Object.keys(obj).reduce(function (arr, key) {
var prop = obj[key];
if (typeof prop === 'object' && !(prop instanceof Array)) {
arr.push(prop);
arr = getChildObjects(prop, arr);
}
return arr;
}, returnArr || []);
}
var parentObj = {
parentProp: 10,
childObj: {
childProp: 20,
grandChildObj: {
y: {
z:'lol',
places:['newyork','canada','dhaka']
}
}
}
};
var childs = getChildObjects(parentObj);
console.log(childs, childs.length);
在这段代码中,我打算在我的嵌套对象的父 object.One 中找到所有嵌套对象文字,它有一个名为 places 的数组作为它自己的数组 property.I 有一个名为 [=12] 的递归函数=] 它遍历每个 属性 并在父对象中找到嵌套的对象文字。
在我的 Parent 对象中有三个嵌套对象 literals.One 其中有一个数组 property.So container
数组应该存储所有找到的嵌套对象文字必须有 3 indexes.But 数组位置也包含为容器的第四个索引 array.I 已找到
typeof(array)=='object' returns true;
arr instanceof Object also returns true;
如何防止将 place 数组与其他对象文字一起插入容器数组?
var getValue;
var parentObj = {
parentProp: 10,
childObj: {
childProp: 20,
grandChildObj: {
y: {
z:'lol',
places:['newyork','canada','dhaka']
}
}
}
}
var arr=[];
var container=[];
var count=0;
function getObjNum(obj){
var prop=Object.getOwnPropertyNames(obj);
for(i=0;i<prop.length;i++){
if(typeof(obj[prop[i]])=='object'){
container.push(obj[prop[i]]);
count++;
getObjNum(obj[prop[i]]);
}
}
}
getObjNum(parentObj);
console.log(container);
正如评论中指出的,您可以使用 instanceof Array
来检查对象是否为数组,如下所示:
function getChildObjects(obj, returnArr) {
return Object.keys(obj).reduce(function (arr, key) {
var prop = obj[key];
if (typeof prop === 'object' && !(prop instanceof Array)) {
arr.push(prop);
arr = getChildObjects(prop, arr);
}
return arr;
}, returnArr || []);
}
var parentObj = {
parentProp: 10,
childObj: {
childProp: 20,
grandChildObj: {
y: {
z:'lol',
places:['newyork','canada','dhaka']
}
}
}
};
var childs = getChildObjects(parentObj);
console.log(childs, childs.length);