如何合并两个json返回数组?

// 字段描述
var field = [{
    field: '服务器',
    display: 'host',
    visible: true,
    type: 'checkbox'
}, {
    field: '部门',
    display: 'department',
    visible: true,
    type: 'input'
}]



// 原始list数据
var list = [{
    id: 1,
    host: '1.1 .1 .1',
    department: '技术'
}]

将两个数组合并,并返回类似于以下形式的数组

[{
        id: 1,
        host: {
            field: '服务器',
            display: 'host',
            value: '1.1 .1 .1',
            visible: true,
            type: 'checkbox'
        },
        department: {
            field: '部门',
            display: 'department',
            value: '技术',
            visible: true,
            type: 'input'
        }
    }
]

阅读 4.4k
4 个回答
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);
var field = [{
    field: '服务器',
    display: 'host',
    visible: true,
    type: 'checkbox'
}, {
    field: '部门',
    display: 'department',
    visible: true,
    type: 'input'
}]

// 原始list数据
var list = [{
    id: 1,
    host: '1.1 .1 .1',
    department: '技术'
}]

function mergeData(list,field){
    let result = [];
    list.forEach(obj=>{ //遍历list数组
        
        let temp = {};
        field.forEach(item => { // 给list数组扩展field数据
            
            temp[item.display] = Object.assign({},item,{value:obj[item.display]})
        });
        
        result.push(Object.assign({id:obj.id},temp));
    });
    
    return result;
}

mergeData(list,field)

兄弟你说的是合并json吧 此处可以用arguments来做, 没个返回返回的JSON数据都看成一个参数 然后创建个新数组 用for in 循环合并。

嗨,思路供参考

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
  }, {})
)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题