javascript - 将数组转换为键值对

问题描述 投票:0回答:4

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

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

所以最终结果看起来像

var arrayB = {orange:1, banana:2}

我觉得我可能必须先在循环中使用循环来在

,
上进行分割,然后再使用另一个循环在
:
上进行分割,但这看起来很混乱。

谢谢。

javascript arrays split
4个回答
0
投票

尝试以下循环:使用

name
中每个对象的键
value
和值
arrayA
创建一个新对象

var arrayA = [{"name":"orange", "value":"1"}, {"name":"banana", "value":"2"}...] var obj = {} $.each(arrayA,function(i,v){ obj[v.name] = v.value; });

https://jsfiddle.net/z8h6omo6/

或者不使用jquery

for(i in arrayA){ obj[arrayA[i].name] = arrayA[i].value; };
    

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

明年应该可以用,如果不行,后年检查一下,依此类推。祝你好运。


0
投票
Reduce 似乎是一个不错的候选者,因为它将按顺序迭代并且仅访问自己存在的属性:

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


0
投票
我建议使用

Array#forEach

和一个对象,因为reduce返回总是相同的,这是没有必要的,因为只添加了一个属性。

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

© www.soinside.com 2019 - 2024. All rights reserved.