鍍金池/ 問答/Java  HTML/ 數(shù)組對象重新排序

數(shù)組對象重新排序

   arr = [
        {id:1,name:'寵物美容'},
        {id:2,name:'清潔保養(yǎng)', children:[
            {id:4,name:'家庭清潔'}
            ]},
        {id:3,name:'汽車服務(wù)'}
    ];
    

上面的數(shù)組怎么重新排序成下面的格式?

   newArr = [
        {id:1,name:'寵物美容'},
        {id:2,name:'清潔保養(yǎng)'},
        {id:4,name:'家庭清潔'}
        {id:3,name:'汽車服務(wù)'}
    ];
    

各位老鐵幫忙看看~_~謝謝

回答
編輯回答
刮刮樂

1.遍歷arr,每個都取出id和name組成新的對象push進去newArr

2.如果arr中的對象里childern存在著值,也把值的id和name取出來形成一個新的對象push進newArr

2018年8月30日 12:40
編輯回答
萌二代

既然es6那肯定多用用es6了

let arr = [
    {id:1,name:'寵物美容'},
    {id:2,name:'清潔保養(yǎng)', children:[
            {id:4,name:'家庭清潔'}
        ]},
    {id:3,name:'汽車服務(wù)'}
];

function format(arr) {
    return arr.reduce((result, item) => {
        return [...result, {id:item.id,name:item.name}, ...item.children || []]
    },[]);
}

console.log(format(arr));
2018年5月6日 11:53
編輯回答
護她命

// 定義轉(zhuǎn)換方法
function getNewArr(arr = []) {
    let newArr = [];

    function eachArr(arr = []) {
        for (let item of arr) {
            const {
                id,
                name,
                children
            } = item;
            newArr.push({
                id,
                name,
            })
            if (children && children.length) {
                eachArr(children);
            }
        }
    }

    eachArr(arr);

    return newArr;
}

// 使用
let arr = [
        {id:1,name:'寵物美容'},
        {id:2,name:'清潔保養(yǎng)', children:[
            {id:4,name:'家庭清潔'}
            ]},
        {id:3,name:'汽車服務(wù)'}
];
let newArr = getNewArr(arr);
2017年12月20日 02:35
編輯回答
耍太極
function trans (arr) {
  return [].concat.apply([], arr.map(cur => {
    return [{id: cur.id, name: cur.name}].concat(cur.children ? trans(cur.children) : [])
  }))
}
let newArr = trans(arr)
2017年1月11日 00:22