2016-04-27 80 views
0

我創建一個對象,並動態地設置其屬性,並把它推到一個數組,如下:添加動態屬性添加到結束對象

var modelData = []; 
var data = {} 
data['rain'] = '123'; 
var items = [{name: 'prod', default_id: 1}, {name: 'dev', default_id: 2}] 
for (var i = 0; i < items.length; i++) {  
    var id = items[i].name; 
    data[id] = items[i].default_id; 
} 
modelData.push(data) 

這工作得很好,但默認情況下它以升序加屬性。我希望它被添加到對象的末尾,所以我的屬性將是rain, prod, dev而不是dev, prod, rain

這可能嗎?

看到這個jsfiddle控制檯爲例。

+3

一個對象的屬性的順序沒有保證,所以你的問題是沒有實際意義,我害怕。如果你想保持順序,那麼你需要使用一個數組。 –

回答

1

對象不具備JS保證秩序。你可以得到最接近的是一個數組的數組:

var ordered_object = []; 
ordered_object.push(['rain', 'First element']); 
ordered_object.push(['prod', 'Second element']); 
ordered_object.push(['dev', 'Third element']); 
ordered_object.forEach(function(pair) { 
    var key = pair[0], 
     value = pair[1]; 

    console.log(key + ': ' + value); 
}); 

將訂購,但得到了「財產」的價值(他們更多的是不是真的屬性)是有點難度:

function get_value(ordered_object, key) { 
    for (var i = 0; i < ordered_object.length; i++) { 
     if (ordered_object[i][0] === key) { 
      return ordered_object[i][1]; 
     } 
    } 
} 
+0

感謝的是,同樣的問題:會有的JavaScript來創建這個數組的對象,並保持順序的方法嗎?或者我需要更換與對象支架支架...我需要它是一個對象 – Zaki

+0

@Zaki對不起,我不完全理解你的要求,但如果你問,如果有使用方法對象/對象符號('{key:value}')並且仍然保持順序,不,沒有。 – lerouche