2013-10-10 33 views
0

例如,我有對象:如何創建從對象2D陣列(鍵,值PAR)

o = {a: 1, b: 2, c: 3} 

和我需要編寫的函數,返回2D陣列:

arr = [['a', 'b', 'c'], [1, 2, 3]]; 

現在我有創建簡單數組的功能,但我不知道如何從那裏(知識未找到)。功能:

function keysAndValues(o){ 
    var arr= []; 
    for(key in data) 
    { 
     arr.push(key); 
     //or 
     arr.push(data[key]); 

    } 
    return arr; 
}; 

如何創建2d數組?

編輯

所有的答案是正確的,我學到一些新的東西。非常感謝你們。壞事是隻有一個人可以得到綠色箭頭,所以它會去第一個給出答案的人。

回答

1
function keysAndValues(o){ 
var arr = new Array([] ,[]); 
for(key in o) 
    { 
    arr[0].push(key); 
    arr[1].push(o[key]); 

    } 
return arr; 
}; 

您基本上要包含兩個數組的數組: 0:所有的鍵 1:所有值

所以推所有鍵入ARR [0]和所有值到ARR [1]

2

需要有三個陣列,包含在索引0和1的兩個陣列的外陣列然後,只需推到相應的陣列:

function keysAndValues(data){ 
    var arr= [[],[]]; //array containing two arrays 
    for(key in data) 
    { 
     arr[0].push(key); 
     arr[1].push(data[key]); 
    } 
    return arr; 
}; 

JS小提琴:http://jsfiddle.net/g2Udf/

2

您可以使arr數組包含最初2個空數組,然後將元素推送到這些數組中。

function keysAndValues(data) { 
    var arr = [[], []]; 
    for (key in data) { 
    if (data.hasOwnProperty(key)) { 
     arr[0].push(key); 
     arr[1].push(data[key]); 
    } 
    } 
    return arr; 
} 
2

我會去圖書館的方法,因爲每個人都寫了關於這個問題的自己拿,使用下劃線的_.keys_.values

_.keys(o); 

將返回o鍵,而

_.values(o) 

將返回o值。所以,從這裏,你可以做

arr = [_.keys(o), _.values(o)] 
+0

+1表示下劃線! –

1

可以使用for in循環遍歷你的對象,添加鍵值,以單獨的陣列,並返回包含這兩個產生一個數組的數組:

var o = {a: 1, b: 2, c: 3} 

function keyValueArray (o) { 
    var keys = []; 
    var values = []; 

    for (var k in o) { 
    keys.push(k); 
    values.push(o[k]); 
    } 
    return [keys,values] 
} 

keyValueArray(o); 

jsfiddle