2013-03-11 64 views
-2

從這個問題你打算在:Getting first object from javascript litteral充分利用對象文本只值

是否可以從一組名字只得到值:值對?因此,可以說,我們有對象的列表,具有任意數量的值,每一個對象:

var items = [ 
    {name:"Foo", age:16, gender:"m"}, 
    {name:"Bar", age:17, gender:"f"}, 
    {name:"foo", age:16, gender:"m"}, 
    {name:"bar", age:18, gender:"m"}, 
    {name:"foobar", age:18, gender:"f"}, 
    {name:"barfoo", age:20, gender:"f"} 
]; 

我怎麼能回到像一個列表:

var items = [ 
    ["Foo", 16, "m"], 
    ["Bar", 17, "f"], 
    ["foo", 16, "m"], 
    ["bar", 18, "m"], 
    ["foobar", 18, "f"], 
    ["barfoo", 20, "f"] 
]; 

我都試過,但不知道是否有一個更好的方式來做到這一點。

Array.prototype.getValues = function() { 
    if(typeof(this[0]) != typeof({})) 
     throw "Array values are expected to be == typeof({})"; 
    var items = []; 
    for (var i = 0; i < this.length; i++) { 
     var r = []; 
     for (var l in this[i]) { 
      r.push(this[i][l]); 
     } 
     items.push(r); 
    } 
    return items; 
}; 
+1

我要問你嘗試過什麼? – kapa 2013-03-11 00:57:03

+0

我不明白爲什麼這個投票結果如此之差 - 。 - – FabianCook 2013-03-11 01:05:17

+0

沒有冒犯,但是在StackOverflow上,人們並沒有真正爲你編寫代碼,但是如果你被困住並且告訴你什麼樣的代碼,你犯的錯誤。所以如果你問一個問題,你通常應該包括你所嘗試過的。當你包含你的代碼時,我刪除了我的downvote。 – kapa 2013-03-11 01:09:48

回答

4
var newitems=[]; 
//loop through each item in the original 
for(var i =0; i<items.length; i++) 
{ 
    newitems[i] = []; 
    //loop over the properties in each element and push it to an array 
    for(var prop in items[i]){ 
    newitems.push(items[i][prop]); 
    } 
} 

或者:

var newitems = items.map(function(elem){ 
    var item = []; 
    for(var prop in elem){ 
    item.push(elem[prop]); 
    } 
    return item; 
}) 
+1

@SmartLemon'Array.prototype'絕對不是那個地方,因爲這是一個非常具體的方法,並不適用於每個數組。 – bfavaretto 2013-03-11 01:24:03

+0

我在很多數組中使用它... – FabianCook 2013-03-11 01:33:56

+0

同意@bfavaretto,Array.prototype應該只適用於適用於所有數組的東西。 – 2013-03-11 01:36:14