2015-04-29 79 views
2

我有這樣的對象JS合併數組值到一個單一的價值

a = {key:'animals', 
    options: ['dog','cat','penguin']} 

我怎麼可以把它簡化爲這樣:

b = ['animals','dogcatpenguin'] 
+0

您的密鑰是否一致? –

+0

迭代屬性並將它們的值推送到新數組。但請注意,瀏覽器可能會按不同順序迭代屬性。如果您始終擁有這些屬性,則可以直接訪問它們。你試過什麼了?你卡在哪裏? –

+2

你可以試試'var b = []; b.push(a.key); b.push(a.options.join(''));' –

回答

6

像這樣

var a = { 
 
    key: 'animals', 
 
    options: ['dog','cat','penguin'] 
 
}; 
 

 
var key, b = []; 
 

 
for (key in a) { 
 
    b.push(Array.isArray(a[key]) ? a[key].join('') : a[key]); 
 
} 
 

 
console.log(b);

或者你可以使用Object.keys.map

var a = { 
 
    key: 'animals', 
 
    options: ['dog','cat','penguin'] 
 
}; 
 

 
var b = Object.keys(a).map(function (key) { 
 
    return Array.isArray(a[key]) ? a[key].join('') : a[key];  
 
}); 
 

 
console.log(b);

1

與計算值,您可以只創建一個新的陣列

var a = {key:'animals', 
 
    options: ['dog','cat','penguin']}; 
 

 
var b = [ 
 
    a.key, 
 
    a.options.join('') 
 
]; 
 

 
document.write(JSON.stringify(b));

1

試試這個

var a = { 
 
    key: 'animals', 
 
    options: ['dog', 'cat', 'penguin'] 
 
} 
 
var result = Object.keys(a).map(function(key){ 
 
    var item = a[key]; 
 
    return item instanceof Array ? item.join('') : item; 
 
}); 
 
console.log(result);

1
var a = { 
    key: 'animals', 
    options: ['dog','cat','penguin'] 
}; 

var idx, b = []; 

for (idx in a) { //Iterate through all the items of object a 
    b.push(Array.isArray(a[key]) ? a[key].join('') : a[key]); //Check if item is array join with (blank) or if not directly push it new array 
} 

console.log(b); 
1

另一種可能的解決方案。

a = {key:'animals',options: ['dog','cat','penguin']} 

var b = new Array(); 
for(var index in a) { 
    var attr = a[index].toString().split(",").join(""); 
    b.push(attr); 
} 
相關問題