2009-06-11 80 views
4

我有一個JavaScript對象數組的數組:使用Javascript - 尼斯來創建一個對象數組

array = [ {x:'x1', y:'y1'}, {x:'x2', y:'y2'}, ... {x:'xn', y:'yn'} ] 

我想創建只是x值的新數組:

[ 'x1', 'x2', ..., 'xn' ] 

我可以在for循環很容易做到這一點...:

var newarray = []; 
for (var i = 0; i < array.length; i++){ 
    newarray.push(array[i].x); 
} 

...但我不知道是否有一個不錯的班輪方式來做到這一點使用jQuery或甚至常規的JavaScript?

+3

你的代碼的對象部分是錯誤的。你的x/y對象沒有任何鍵。只是想我會指出。 – 2009-06-11 19:25:04

+0

@musicfreak我認爲他的意思是他的對象有兩個屬性,x和y:{x:foo,y:bar} – 2009-06-11 19:28:26

回答

10

你可以用map做到這一點:

var newarray = jQuery.map(array, function (item) { return item.x; }); 
0

誠然這是一個有很多數據的工作,你可以使用jLinq (disclaimer: my project)選擇和查詢您的記錄,然後回到你想要什麼。

同樣,這對於處理大量對象並進行查詢時非常有用,但是您可能會看到源代碼的一些想法。

3

的ECMAScript 5採用原生map()方法:

var newArray = array.map(function(value) { return value.x; }); 

在FF,這甚至應該比循環更快,但是這並不適用於所有的瀏覽器(Opera)的;其他人甚至不支持它(IE)。

相關問題