如何将一个整数数组转换成一个对象数组?

4
我希望将一个以此格式排列的数组转换:
var values = [1,2,3]; 

以这种格式形成一个数组。
var data = [ 
  {x: 0, value: 1},
  {x: 1, value: 2},
  {x: 2, value: 3}
];

错别字 var data = [ {x: 0, value: 1}, {x: 1, value: 2}, {x: 2, value: 3} ]; - Leo Ku
3个回答

17

您可以简单地使用Array.prototype.map方法:

var data = values.map(function(el, i) {
   return {
     x: i,
     value: el
   }
});

1
也许像这样做就可以了:
var values = [1,2,3];
var _dict = [];

for (var i = 0; i < values.length; i++) {
   _dict.push( {x: i, value: values[i]} );
}

{{链接1:JSFiddle}}


不要在数组上使用for...in。这就像对该论点的典型案例。 - Oka
@Oka 谢谢。我不知道那个。修改后的代码够好吗? - sam
1
我没有给你的回答点踩,但是你的回答有几个问题。1. OP 想要创建一个对象数组而不是一个对象。2. 你不应该使用 for ... in 循环来遍历数组。3. xy 应该是单独的属性。将 _dict 定义为一个数组,正确迭代,然后使用 Array.prototype.push 方法将对象推入数组中。 - Ram
@Vohuman 感谢您的评论。您没有投反对票,但我给了您的答案点赞。我也是JavaScript的新手,所以答案一般般 :) - sam
谢谢你 :). 是的,但是你忘记将 _dict 变量定义为数组。 var _dict = []; - Ram
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - sam

1
一种基本选项是:


var values = [1,2,3]; 

var newValues = [];
for(var i = 0;i < values.length;i++){
    newValues.push( {x: i, values: values[i]} );
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接