Javascript 将列表转换为数组
我有一个函数,它以列表作为参数,并且必须将列表中的元素返回到数组中。 例如,在输入的情况下:Javascript 将列表转换为数组,javascript,arrays,Javascript,Arrays,我有一个函数,它以列表作为参数,并且必须将列表中的元素返回到数组中。 例如,在输入的情况下: {value: 1, rest: {value: 2, rest: null}} 输出应如下所示: [1, 2] 这就是我试图解决它的方式: function listToArray(list){ var arr = []; for (var node = list; node; node = node.rest) { arr.unshift(node); }
{value: 1, rest: {value: 2, rest: null}}
输出应如下所示:
[1, 2]
这就是我试图解决它的方式:
function listToArray(list){
var arr = [];
for (var node = list; node; node = node.rest) {
arr.unshift(node);
}
return arr;
}
console.log(listToArray({value: 1, rest: {value: 2, rest: null}}));
我得到的结果是:
[{value: 2, rest: null}, {
value: 1
rest: {value: 2, rest: null}
}]
有人知道我应该更改什么才能使其工作吗?您只是缺少节点中的
.value
函数列表阵列(列表){
var-arr=[];
for(var node=list;node;node=node.rest){
arr.unshift(节点值);
}
返回arr;
}
log(listToArray({value:1,rest:{value:2,rest:null}))
您只是缺少节点中的.value
函数列表阵列(列表){
var-arr=[];
for(var node=list;node;node=node.rest){
arr.unshift(节点值);
}
返回arr;
}
log(listToArray({value:1,rest:{value:2,rest:null}))代码>可以使用递归获取所有内部对象值
var obj={value:1,rest:{value:2,rest:null};
var list=objToList(obj,‘value’、‘rest’);
控制台日志(列表);
功能对象列表(对象、值字段、目标字段){
返回objtolistiner(obj,valueField,targetField,[]);
}
函数ObjToListiner(对象、值字段、目标字段、列表){
if(对象(obj)){
list.push(obj[valueField]);
ObjToListiner(obj[targetField],valueField,targetField,list)
}
退货清单;
}
功能对象(obj){
返回obj!==null&&typeof obj====object';
}
。作为控制台包装器{
排名:0;
最大高度:100%!重要;
}
您可以使用递归获取所有内部对象值
var obj={value:1,rest:{value:2,rest:null};
var list=objToList(obj,‘value’、‘rest’);
控制台日志(列表);
功能对象列表(对象、值字段、目标字段){
返回objtolistiner(obj,valueField,targetField,[]);
}
函数ObjToListiner(对象、值字段、目标字段、列表){
if(对象(obj)){
list.push(obj[valueField]);
ObjToListiner(obj[targetField],valueField,targetField,list)
}
退货清单;
}
功能对象(obj){
返回obj!==null&&typeof obj====object';
}
。作为控制台包装器{
排名:0;
最大高度:100%!重要;
}
使用arr.push(节点)代码>而不是arr.unshift(节点)
将更改元素的顺序,但输出格式仍然不是所需的格式。使用arr.push(节点)代码>而不是arr.unshift(节点)
将更改元素的顺序,但输出格式仍然不是所需的格式。