2012-06-06 101 views
0

我有鍵和值我想推入2門不同的陣列(鑰匙插入一個和值到另一個)如何將數組值推送到不同的數組?

這裏其元素的數組是我已經使用的代碼:

// the array i want to split 
var defaultc = { 
    'a':'r019', 
    'b':'r027', 
    'c':'r027', 
    'd':'r027', 
    'e':'r047' 
}; 
// the array i want to add to 
var step_layer = []; // keys to this 
var step_colour = {}; // values to this 


$('#reset').click(function() { 
    $.each(defaultc, function(layer, colour) { 

     // both these functions are working properly 
     apply_changes(layer, colour); 
     sumary(layer, colour); 
    }); 

    // this part is not 
    for (var layer in defaultc) { 
     if (!defaultc.hasOwnProperty(layer)) { 
     step_layer.push(layer); 
     step_colour[layer].push(colour); 
    }} 
    return false; 
}); 
+1

這是一個對象不是數組 – thecodeparadox

回答

1

你必須一個對象,而不是一個數組。它很簡單:

var step_layer = Object.keys(defaultc); // array of property names 
var step_colour = Object.values(defaultc); // arrray of property values 

但作爲.values是非標準方法,.keys僅適用於現代的瀏覽器和對象屬性的迭代順序不固定,你應該使用一個循環了對象:

var step_layer = []; // array of property names 
var step_colour = []; // arrray of property values 
for (var layer in defaultc) { 
    step_layer.push(layer); 
    step_colour.push(defaultc[layer]); 
} 

這就是代碼不同的地方。首先,你從var step_colour = {};開始。這又是一個對象,用於鍵值映射。所以,它甚至可以通過step_colour[layer]訪問它的一個屬性,但這仍然是undefined。你似乎認爲它會是一個數組,使用.push就會發生錯誤(查看你的調試控制檯)。林不知道你想達到什麼。創建一個數組,克隆變量defaultc?另一個問題是if (!defaultc.hasOwnProperty(layer))。首先,你的defaultc是一個普通的對象,並且不會繼承任何可枚舉的屬性,所以只需保留這個條件即可。第二,由於所有layer s你循環過都是自己的屬性defaultc,該塊永遠不會被執行。

+0

@Bergi我明白你在說什麼..我現在正在試驗它。但step_layer需要成爲我的其他操作才能工作的對象。我正在探索將其推送到對象或將其推送到數組,然後將該數組轉換爲對象的方法。 –

+0

它應包含哪些鍵和值?與「defaultc」有什麼區別? – Bergi

+0

@Bergi defaultc的按鍵應該被添加到step_layer作爲'1':'a','2':'b'..我是一個新手編碼,所以即時通訊嘗試學習它..對不起,沒有弄清事情 –

2
var defaultc = { 
    'a':'r019', 
    'b':'r027', 
    'c':'r027', 
    'd':'r027', 
    'e':'r047' 
}; 

var step_layer = []; // keys to this 
var step_colour = []; // values to this 

for(var key in defaultc) { 
    setip_layer.push(key); 
    step_colour.push(defaultc[key]); 
} 
+0

@thecodeparadox:你的代碼是錯誤的。 'step_colour'是一個對象,沒有'push'方法。 – Bergi