2012-12-20 20 views
31

可能重複:
Accessing properties of an array of objects如何將javascript對象數組轉換爲我想要的對象屬性的字符串數組?

考慮:

[{ 
    'id':1, 
    'name':'john' 
},{ 
    'id':2, 
    'name':'jane' 
}........,{ 
    'id':2000, 
    'name':'zack' 
}] 

什麼是最好的方式來獲得:

['john', 'jane', ...... 'zack'] 

必備我循環並推動item.name到另一個數組,還是有一個簡單的功能呢?

+0

你確定你需要將其轉換爲這樣的一個數組?通常情況下,做這樣的轉換表明您可能以錯誤的方式處理您的潛在問題。退一步來確定情況並非如此。 – Shauna

+0

@shauna我的問題是這樣的。即時使用引導程序的鍵入它只能訪問第二種格式:這是一個字符串數組。我的ajax調用將返回第一個格式因爲我需要的ID。我可以這樣做,並擴展boostrap的typeahead,而是做到這一點:發送第二種格式引導。只是保持第一種格式,當用戶選擇一個選項檢查這第一個對象,並根據需要使用該ID。 –

回答

52

如果你的對象的數組是items,你可以這樣做:

var items = [{ 
 
    id: 1, 
 
    name: 'john' 
 
}, { 
 
    id: 2, 
 
    name: 'jane' 
 
}, { 
 
    id: 2000, 
 
    name: 'zack' 
 
}]; 
 

 
var names = items.map(function(item) { 
 
    return item['name']; 
 
}); 
 

 
console.log(names); 
 
console.log(items);

文檔:map()

+0

這個問題沒有用jQuery標記 – Bruno

+1

@ bru.scopelliti'map()'是本地JavaScript,而不僅僅是jQuery。 – Sirko

+1

@ bru.scopelliti - 我的答案與jQuery無關.. – techfoobar

2

使用JavaScript的數組的map()功能本機:

var yourArray = [ { 
    'id':1, 
    'name':'john' 
},{ 
    'id':2, 
    'name':'jane' 
}........,{ 
    'id':2000, 
    'name':'zack' 
}]; 

var newArray = yourArray.map(function(el){ 
           return el.name; 
           }); 
0

您可以使用此功能:

function createStringArray(arr, prop) { 
    var result = []; 
    for (var i = 0; i < arr.length; i += 1) { 
     result.push(arr[i][prop]); 
    } 
    return result; 
} 

只是傳遞對象的數組,你需要的屬性。上述腳本即使在舊的EcmaScript實現中也可以工作。

0

你可以做到這一點的對象只能監測自己的屬性:

var arr = []; 

for (var key in p) { 
    if (p.hasOwnProperty(key)) { 
     arr.push(p[key]); 
    } 
} 
相關問題