关于将数组转换为对象的问题

时间:2017-12-05 19:34:17

标签: javascript

我在客户端有一个动态创建的数组。

value = [
  [-88.17179185999998, 41.78264698400005],
  [-88.17193080699997, 41.782605419000056]
]

我需要按照此顺序将其存储为对象格式,并添加新的"spatialReference": {"wkid": 4326 }

   var params = [
     {
       "x": -88.17179185999998,
       "y": 41.78264698400005,
       "spatialReference": {"wkid": 4326 }
     }, 
     {
       "x": -88.17193080699997,
       "y": 41.782605419000056,
       "spatialReference": {"wkid": 4326 }
     }
   ];
你能告诉我怎么做吗?

2 个答案:

答案 0 :(得分:2)

您只需使用.map()

即可

const value = [
  [-88.17179185999998, 41.78264698400005],
  [-88.17193080699997, 41.782605419000056]
];

const objs = value.map(([x, y]) => ({ x, y, spatialReference: {wkid: 4326 } }));

console.log(objs);

.map()只是遍历每个元素,并针对它运行一些函数,并使用它的结果来创建一个新数组。将数组中的元素从a转换为b非常容易。

答案 1 :(得分:2)

使用map创建对象数组:

var value = [
  [-88.17179185999998, 41.78264698400005],
  [-88.17193080699997, 41.782605419000056]
]

var data = value.map(function(elem) {
  return {
    x: elem[0],
    y: elem[1],
    spatialReference: {
      wkid: 4326 
    }
  }
})

console.log(data)

或使用es6:

const value = [
  [-88.17179185999998, 41.78264698400005],
  [-88.17193080699997, 41.782605419000056]
]

let data = value.map(elem => ({
    x: elem[0],
    y: elem[1],
    spatialReference: {
      wkid: 4326
    }
}))

console.log(data)