更改array.map中的索引

时间:2017-11-07 09:04:19

标签: javascript

我有一个形式的变量:

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;
});

这可能吗?我主要只想使用起始编号作为密钥来访问结束编号而不使用搜索。我试过这样做:

cv2.release()

但它给出了:     0 : {22:8} 1 : {60:43} 2 : {35:55} 3 : {25:40} 这意味着我必须使用0,1,2,3作为索引。

2 个答案:

答案 0 :(得分:4)

在这种情况下,只有Array#map不起作用,因为没有后期处理,您将获得包含对象的单个数组。您需要将所有对象组合成一个对象。

使用Object.assignspread syntax ...,您将获得一个包含数组中对象的所有属性的数组。



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);




答案 1 :(得分:3)

您可以使用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);