2017-04-26 130 views
1

我想將對象數組轉換爲帶有javascript中的鍵值對的對象。如何將對象數組轉換爲具有鍵值對的對象

var arr=[{"name1":"value1"},{"name2":"value2"},...}]; 

我怎樣才能將其轉換爲一個對象,如

{"name1":"value1","name2":"value2",...} 

我希望它在大多數瀏覽器都支持。

+0

這是不是很清楚的男人。給我們更多的東西來理解..給你一個更好的例子和你想要的模式。 –

回答

2

試試這個簡單的邏輯

var arr=[{"name1":"value1"},{"name2":"value2"}]; 
 
var obj = {}; //create the empty output object 
 
arr.forEach(function(item){ 
 
    var key = Object.keys(item)[0]; //take the first key from every object in the array 
 
    obj[ key ] = item [ key ]; //assign the key and value to output obj 
 
}); 
 
console.log(obj);

3

你可以運行一個減少在陣列上,並返回一個新的對象。但重要的是要記住,如果屬性相同,它們將被覆蓋。

const newObject = array.reduce((current, next) => { 
    return { ...current, ...next}; 
}, {}) 

如果您正在使用ES5並沒有ES6:

var newObject = array.reduce(function(current, next){ 
    return Object.assign({}, current, next); 
}, {}) 
1

使用與Array#forEachObject.keys

var arr = [{"name1": "value1"},{"name2": "value2"}]; 
 
var obj = {}; 
 
arr.map(k => Object.keys(k).forEach(a => obj[a] = k[a])) 
 
console.log(obj)

+1

一個map方法返回一個新的數組,但是這個函數只是用來變異'var obj',所以'forEach'更適合。 –

7

你可以使用Object.assignspread syntax ...用給定的數組創建單個對象與對象。

var array = [{ name1: "value1" }, { name2: "value2" }], 
 
    object = Object.assign({}, ...array); 
 
    
 
console.log(object);

0

試試這個:

var arr=[{"name1":"value1"},{"name2":"value2"}]; 
var new_arr=[]; 
$.each(arr,function(index){ 
    $.each(arr[index],function(key,value){ 
    var nw_obj={}; 
    nw_obj[key]=value; 
    new_arr.push(nw_obj); 
    }); 
}); 
console.log(JSON.stringify(new_arr)); 
0

使用for...in循環

var arr=[{"name1":"value1"},{"name2":"value2"}]; 
 

 
var obj = {}; 
 
for (var i in arr) { 
 
    obj[Object.keys(arr[i])] = arr[i][Object.keys(arr[i])]; 
 
} 
 

 
console.log(obj);

使用Array.map()方法與ES6

var arr=[{"name1":"value1"},{"name2":"value2"}]; 
 

 
var obj = {}; 
 

 
arr.map(item => obj[Object.keys(item)] = item[Object.keys(item)]); 
 

 
console.log(obj);

使用Object.assign()方法與ES6spreaqd(...)分配

let arr=[{"name1":"value1"},{"name2":"value2"}]; 
 

 
let obj = Object.assign({}, ...arr); 
 

 
console.log(obj);

相關問題