>我有一个形式的变量:
var data=[
{
start:22,
end: 8
},
{
start:60,
end: 43
},
{
start: 35,
end: 55
},
{
start:25,
end:40
}
];
我想将其映射成这样
var newData = { 22:8, 60:43, 35:55, 25:40};
这可能吗?我主要只想使用起始号码作为键来访问结束号码,而无需使用搜索。我尝试这样做:
var mapData = data.map(function(data){
var x = {};
x[data.start]=data.end;
return x;
});
但它给出了: 0:{22: 8}1:{60: 43}2:{35: 55}3:{25: 40}这意味着我必须使用 0、1、2、3 作为索引。
在这种情况下,
只有Array#map
不起作用,因为如果没有后处理,你会得到一个带有对象的数组。您需要将所有对象合并为一个对象。
使用 Object.assign
和 spread 语法...
,您可以获得一个数组,其中包含数组中对象的所有属性。
var data = [{ start: 22, end: 8 }, { start: 60, end: 43 }, { start: 35, end: 55 }, { start: 25, end: 40 }],
result = Object.assign(...data.map(({ start, end }) => ({ [start]: end })));
console.log(result);
您可以使用 array.reduce:
var data=[
{
start:22,
end: 8
},
{
start:60,
end: 43
},
{
start: 35,
end: 55
},
{
start:25,
end:40
}
];
var res = data.reduce((m, o) => {
m[o.start] = o.end;
return m;
}, {});
console.log(res);