Javascript-映射对象成员以返回新的展平对象

Javascript-映射对象成员以返回新的展平对象,javascript,lodash,Javascript,Lodash,有没有更简单的方法来实现下面的代码?使用lodash的答案也将被接受 var obj = { dataTable: { column1: ["1"], column2: ["2"], column3: ["3"] }, dataTable2: { column4: ["4"], column5: ["5"], column6: ["6"] } } var result =

有没有更简单的方法来实现下面的代码?使用lodash的答案也将被接受

var obj = {
    dataTable: {
      column1: ["1"],
      column2: ["2"],
      column3: ["3"]
    },
    dataTable2: {
      column4: ["4"],
      column5: ["5"],
      column6: ["6"]
    }     
}    

var result = {};
var keys = Object.keys(obj);

keys.forEach(function(key) {
  var fields = Object.keys(obj[key]);
  fields.forEach(function(field) {
    result[field] = obj[key][field][0];
  });
});

console.log(result)
---> {column1: "1", column2: "2", column3: "3", column4: "4", column5: "5", column6: "6"}

你可以使用自己的功能

对于两级嵌套,您可以使用该方法两次:

var result = {};
_.forOwn(obj, function(value1, key){
  _.forOwn(value1, function(value2, key){
    result[key] = value2[0];
  })
})

你可以使用自己的功能

对于两级嵌套,您可以使用该方法两次:

var result = {};
_.forOwn(obj, function(value1, key){
  _.forOwn(value1, function(value2, key){
    result[key] = value2[0];
  })
})
您可以使用递归:

myFn= (u,o,k)=> {
    if (o.map == [].map) u[k] = o[0];
    else for (k in o) myFn(o[k],k)
}
上述函数将搜索所有嵌套级别,并相应地填充对象

要使用,请执行以下操作:

var output = {};
myFn(output, obj);

console.log(output);
// {column1: "1", column2: "2", column3: "3", column4: "4", column5: "5", column6: "6"}
您可以使用递归:

myFn= (u,o,k)=> {
    if (o.map == [].map) u[k] = o[0];
    else for (k in o) myFn(o[k],k)
}
上述函数将搜索所有嵌套级别,并相应地填充对象

要使用,请执行以下操作:

var output = {};
myFn(output, obj);

console.log(output);
// {column1: "1", column2: "2", column3: "3", column4: "4", column5: "5", column6: "6"}

你可以用两个for…in循环来完成

var obj={ 数据表:{ 第1栏:[1], 第二栏:[2], 第3栏:[3] }, 数据表2:{ 第四栏:[4], 第5栏:[5], 第6栏:[6] } },结果={} 对于obj中的p{ 对于obj中的a[p]{ 结果[a]=obj[p][a]。加入; } }
console.logresult 你可以用两个for…in循环来完成

var obj={ 数据表:{ 第1栏:[1], 第二栏:[2], 第3栏:[3] }, 数据表2:{ 第四栏:[4], 第5栏:[5], 第6栏:[6] } },结果={} 对于obj中的p{ 对于obj中的a[p]{ 结果[a]=obj[p][a]。加入; } }
console.logresult ES6真正出色的任务

const res = Object.assign(...Object.keys(obj).map(x => obj[x]))
Object.keys(res).forEach(x => res[x] = res[x][0])

ES6真正出色的任务

const res = Object.assign(...Object.keys(obj).map(x => obj[x]))
Object.keys(res).forEach(x => res[x] = res[x][0])

下面是一个lodash解决方案,它使用来设置所有datatable对象,然后使用来设置每个列的值


下面是一个lodash解决方案,它使用来设置所有datatable对象,然后使用来设置每个列的值


快速、简单、干净。只是别忘了声明变量p和a。快速、简单、干净。只是别忘了申报变量p和a。