首页 > 开发 > JS > 正文

请问下面这个列表转数组的函数错在哪里 ?

2017-09-05 12:38:17  来源:网友分享

请问为什么console.log(listToArray(arrayToList([1,2,3])));运行结果是[1]而不是[1,2,3]呢,第二个函数问题出在哪里

function arrayToList(arr){    var list = {};    list['value'] = arr[0];    if (arr.length > 1) {        list['rest'] = arrayToList(arr.slice(1))    }else{        list['rest'] = null;    }    return list;}function listToArray(list){    var arr = [];    for(var key in list){        if (key =='value') {            console.log(1)            arr.push(list[key]);        }else if (key == 'rest' && list.rest != null) {            console.log(2);            arr.concat(listToArray(list.rest));        }    }                console.log(arr);    return arr;}

解决方案

arr.concat(listToArray(list.rest));不会改变arr,你需要arr = arr.concat(listToArray(list.rest));