我有一组来自服务器响应的对象。
数组结构:
[
{
col1: ["a", "b"],
col2: ["c", "d"]
},
{
col1: ["e", "f"],
col2: ["g", "h"]
}
]
我希望所需的输出数组采用以下形式:
[
{
col1: "b",
col2: "d"
},
{
col1: "f",
col2: "h"
}
]
基本上我想将最初为数组的Object键值转换为单个值,该值将是Object keys数组的第二个元素。
我可以通过使用toString()
将Object Keys数组转换为逗号分隔字符串来进行转换,然后执行string.split(",")[1]
但我无法遍历Object键。
更喜欢使用map for iteration的ES6中的输入
答案 0 :(得分:0)
以下代码应符合您的规范。
var arr = [ {col1: ["a","b"], col2: ["c","d"] }, {col1: ["e","f"], col2: ["g","h"] } ]
// [ {col1: "b" , col2: "d" }, {col1: "f", col2: "h" } ]
arr2 = [];
arr.forEach(e => {
let currObj = {};
Object.keys(e).forEach(f => {
currObj[f] = e[f][1]
})
arr2.push(currObj)
})
console.log(arr2);

答案 1 :(得分:0)
使用Array#reduce
和Object.keys
的可能解决方案。
var arr = [ {col1: ["a","b"], col2: ["c","d"] }, {col1: ["e","f"], col2: ["g","h"] } ],
res = arr.reduce(function(s,a) {
var obj = {};
Object.keys(a).map(function(c) {
obj[c] = a[c][1];
})
s.push(obj);
return s;
}, []);
console.log(res);

答案 2 :(得分:0)
var data = [ {col1: ["a","b"], col2: ["c","d"] }, {col1: ["e","f"], col2: ["g","h"] } ];
var res=[];
var d = data.reduce(function(all,item){
res.push({col1:item.col1[1],col2:item.col2[1]});
return all;
},{});
console.log(res);

答案 3 :(得分:0)
您可以将Array#map
,Object.assign
和spread syntax ...
的组合与新对象的内部映射与所需的键/值结合使用。
var data = [{ col1: ["a", "b"], col2: ["c", "d"] }, { col1: ["e", "f"], col2: ["g", "h"] }],
result = data.map(o => Object.assign({}, ...Object.keys(o).map(k => ({ [k]: o[k][1] }))));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }