我试图将任何类型对象的所有叶值都作为数组 这是示例对象,我想从这个对象获得[1,2,3]。
{
“group1”:[
{
“value1”:”1”,
"value2”:”2”
},
{
“gropu2”:[{
"gropu3”:”3”
}]
}]
}
这是当前的实施。
var t = {
"a":[
{
"a":"1",
"b":"2"
},
{
"d":[{
"e":"3"
}]
}]
}
function getNode( node ){
if(node == null)
return null;
if(typeof node !== 'object'){
return [node];
}
var arr = [];
for( var i = 0; i < node.length ; i ++){
Array.prototype.push.apply(arr, getNode(node[i]));
}
return arr;
}
$(document).ready(function(){
console.log(getNode(t));
});
但它什么都没有显示 我无法理解我的实施错误在哪里,还有其他简单的方法来完成这项工作吗?
答案 0 :(得分:0)
问题在于这一行。
for( var i = 0; i < node.length ; i ++){
此处,您无法使用object
循环访问for
的所有元素
您必须将object
转换为array
,然后执行此操作。
var array_node = Object.keys(node).map(function(key) { return node[key] });
for( var i = 0; i < array_node.length ; i ++){
Array.prototype.push.apply(arr, getNode(array_node[i]));
}