2011-04-13 54 views
3

什麼會着手分離鍵和值分爲兩個不同的陣列,這樣是最好的方法 -獨立的鍵和值對成兩個陣列

var data = {"A Key": 34, "Another Key": 16, "Last Key": 10}; 

將成爲本 -

data1 = ["A Key", "Another Key", "Last Key"]; 
data2 = [34, 16, 10]; 

謝謝。

+0

這是怎麼回事? var data = {「A Key」:34,「Another Key」:16,「Last Key」:10}; var data1 = Object.keys(data); var data2 = Object.values(data);' – Rockcollins 2017-01-11 07:28:17

回答

7
var data = {"A Key": 34, "Another Key": 16, "Last Key": 10}; 

var data1 = [], 
    data2 = []; 

for (var property in data) { 

    if (! data.hasOwnProperty(property)) { 
     continue; 
    } 

    data1.push(property); 
    data2.push(data[property]); 

} 
  1. 設置兩個不同的空白陣列。
  2. 遍歷對象的枚舉屬性。
  3. 如果data沒有明確指定此屬性(即不在原型鏈的上方),請跳過此迭代。
  4. 將鍵和它的值推送到它們各自的數組。

jsFiddle

1
data1=[]; 
data2=[] 
for (x in data) { 
    data1.push(x); 
    data2.push(data[x]); 
} 
2

該函數將將data對象拆分爲keys和values數組。它返回一個包含兩個數組的對象。

function splitObj(data){ 
    var keys = [], 
     vals = []; 
    for (var l in data) { 
    if (data.hasOwnProperty(l){ 
    keys.push(l); 
    vals.push(data[l]]; 
    } 
    } 
    return {keys: keys,vals:vals}; 
} 
1

您可以循環使用for in循環的屬性,然後根據需要將它們分配給數組。

確保您檢查密鑰是否是對象的屬性,而不是原型。

var data1 = []; 
var data2 = []; 

for (var key in p) { 
    if (p.hasOwnProperty(key)) { 
    data1.push(key); 
    data2.push(p[key]); 
    } 
}