我是JavaScript新手,我試圖將數組轉換爲鍵值對。javascript - 隱藏一個數組鍵值對
var arrayA = [{"name":"orange", "value":"1"}, {"name":"banana", "value":"2"}...]
所以最終的結果會是什麼樣子var arrayB = {orange:1, banana:2}
我覺得我可能要在一個循環內使用循環首先拆就,
然後又是一個對:
分裂,但似乎亂。
謝謝。
我是JavaScript新手,我試圖將數組轉換爲鍵值對。javascript - 隱藏一個數組鍵值對
var arrayA = [{"name":"orange", "value":"1"}, {"name":"banana", "value":"2"}...]
所以最終的結果會是什麼樣子var arrayB = {orange:1, banana:2}
我覺得我可能要在一個循環內使用循環首先拆就,
然後又是一個對:
分裂,但似乎亂。
謝謝。
嘗試使用以下循環:創建與該鍵name
一個新對象,並在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/
或每個對象的值value
而不jquery的
for(i in arrayA){
obj[arrayA[i].name] = arrayA[i].value;
};
一個簡單方法是簡單地遍歷數組的長度,設置一個新的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
將具有以下結構:
{
"orange": 1,
"banana": 2
}
這沒有把戲。感謝堆。 – 712sash
當我已經做了我的代碼,已經有兩個答案。但我不想放棄,所以我寫這個。
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);
應該在明年的工作,如果沒有,那麼檢查它在今明兩年之後,等好運氣。
減少似乎是一個很好的候選人,因爲它會以迭代,並僅訪問次數自己的屬性存在:
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))
我會建議使用Array#forEach
和對象,因爲減少的回報總是一樣的,這是沒有必要的,因爲只有一個屬性被添加。
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>');
護理應與'for..in'爲後代在任何另外的繼承屬性的情況下使用。 – roflmyeggo
@roflmyeggo你是什麼意思? – madalinivascu
'for..in'將迭代/ all/properties,包括繼承的屬性。沒有訂單保證,這使得它對陣列更加危險。 – roflmyeggo