javascript - 将数组转换为键值对

时间:2016-05-06 04:15:29

标签: javascript arrays split

我是javascript的新手,我正在尝试将数组转换为键值对。

var arrayA = [{"name":"orange", "value":"1"}, {"name":"banana", "value":"2"}...]

所以最终结果看起来像var arrayB = {orange:1, banana:2}

我觉得我可能不得不首先在循环中使用循环来分割,然后再使用另一个循环来分割:,但这看起来很混乱。

感谢。

5 个答案:

答案 0 :(得分:0)

尝试以下循环:使用密钥value创建一个新对象,并在arrayA

中创建每个对象的值var arrayA = [{"name":"orange", "value":"1"}, {"name":"banana", "value":"2"}...] var obj = {} $.each(arrayA,function(i,v){ obj[v.name] = v.value; });
 for(i in arrayA){
     obj[arrayA[i].name] = arrayA[i].value;
    };

https://jsfiddle.net/z8h6omo6/

或没有jquery

\path to\opencv\build\x86\vc12\bin;

答案 1 :(得分:0)

一种简单的方法是简单地循环遍历数组的长度,在每次传递期间根据pick的索引设置新的Object属性。

Array

然后var arrayA = [{"name":"orange", "value":"1"}, {"name":"banana", "value":"2"}]; var objectA = {}; for (var i = 0; i < arrayA.length; i++) { objectA[arrayA[i].name] = arrayA[i].value; } 将具有以下结构:

objectA

答案 2 :(得分:0)

当我完成我的代码时,已经有两个答案了。但我不想放弃,所以我写这个。

var arrayA = [{"name":"orange", "value":"1"}, {"name":"banana", "value":"2"}];

var arr={};
for(var i = arrayA.length -1; i>=0; i--){
  arr[Object.values(arrayA[i])[0]]=Object.values(arrayA[i])[1];
}

console.log(arr);

它应该在明年工作,如果没有,那么在明年之后的一年检查,等等。祝你好运。

答案 3 :(得分:0)

Reduce似乎是一个很好的候选者,因为它将按顺序迭代,并且仅存在自己存在的属性:

&#13;
&#13;
var arrayA = [{"name":"orange", "value":"1"}, {"name":"banana", "value":"2"}];

var obj = arrayA.reduce(function(acc, obj) {
  acc[obj.name] = obj.value;
  return acc;
},{});

document.write(JSON.stringify(obj))
&#13;
&#13;
&#13;

答案 4 :(得分:0)

我建议使用Array#forEach和一个对象,因为reduce返回总是相同的,并且没有必要,因为只添加了一个属性。

&#13;
&#13;
var array = [{"name":"orange", "value":"1"}, {"name":"banana", "value":"2"}],
    object = {};

array.forEach(function(a) {
  object[a.name] = a.value;
});

document.write('<pre>' + JSON.stringify(object, 0, 4) + '</pre>');
&#13;
&#13;
&#13;