在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML5  HTML/ 如何合并兩個(gè)json返回?cái)?shù)組?

如何合并兩個(gè)json返回?cái)?shù)組?

// 字段描述
var field = [{
    field: '服務(wù)器',
    display: 'host',
    visible: true,
    type: 'checkbox'
}, {
    field: '部門(mén)',
    display: 'department',
    visible: true,
    type: 'input'
}]



// 原始list數(shù)據(jù)
var list = [{
    id: 1,
    host: '1.1 .1 .1',
    department: '技術(shù)'
}]

將兩個(gè)數(shù)組合并,并返回類(lèi)似于以下形式的數(shù)組

[{
        id: 1,
        host: {
            field: '服務(wù)器',
            display: 'host',
            value: '1.1 .1 .1',
            visible: true,
            type: 'checkbox'
        },
        department: {
            field: '部門(mén)',
            display: 'department',
            value: '技術(shù)',
            visible: true,
            type: 'input'
        }
    }
]

回答
編輯回答
離夢(mèng)

兄弟你說(shuō)的是合并json吧 此處可以用arguments來(lái)做, 沒(méi)個(gè)返回返回的JSON數(shù)據(jù)都看成一個(gè)參數(shù) 然后創(chuàng)建個(gè)新數(shù)組 用for in 循環(huán)合并。

2017年7月13日 20:34
編輯回答
安若晴

嗨,思路供參考

const fieldMap = new Map(field.map(d => [d.display, d]))
const result = list.map(x =>
  Object.keys(x).reduce((o, k) => {
    o[k] = fieldMap.has(k) ? { ...fieldMap.get(k), value: x[k] } : x[k]
    return o
  }, {})
)
2018年4月26日 11:22
編輯回答
墨沫
const result = list.map((item) => {
    Object.keys(item).forEach((key) => {
        const filterArr = field.filter((fieldItem) => fieldItem.display === key)
        if (filterArr.length > 0) {
            filterArr[0].value = item[key];
            item[key] = filterArr[0];
        }        
    });
    return item;
});
console.log(result);
2017年8月22日 01:26
編輯回答
鐧簞噯
var field = [{
    field: '服務(wù)器',
    display: 'host',
    visible: true,
    type: 'checkbox'
}, {
    field: '部門(mén)',
    display: 'department',
    visible: true,
    type: 'input'
}]

// 原始list數(shù)據(jù)
var list = [{
    id: 1,
    host: '1.1 .1 .1',
    department: '技術(shù)'
}]

function mergeData(list,field){
    let result = [];
    list.forEach(obj=>{ //遍歷list數(shù)組
        
        let temp = {};
        field.forEach(item => { // 給list數(shù)組擴(kuò)展field數(shù)據(jù)
            
            temp[item.display] = Object.assign({},item,{value:obj[item.display]})
        });
        
        result.push(Object.assign({id:obj.id},temp));
    });
    
    return result;
}

mergeData(list,field)
2017年4月12日 04:09