我是javascript的新手,我正在尝试将数组转换为键值对。
var arrayA = [{"name":"orange", "value":"1"}, {"name":"banana", "value":"2"}...]
所以最终结果看起来像var arrayB = {orange:1, banana:2}
我觉得我可能不得不首先在循环中使用循环来分割,
然后再使用另一个循环来分割:
,但这看起来很混乱。
感谢。
答案 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似乎是一个很好的候选者,因为它将按顺序迭代,并且仅存在自己存在的属性:
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;
答案 4 :(得分: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>');
&#13;