将动态属性添加到对象结尾

时间:2016-04-27 10:04:57

标签: javascript jquery object

我正在创建一个对象并动态设置其属性并将其推送到数组,如下所示:

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控制台以获取示例。

1 个答案:

答案 0 :(得分: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);
});

它将被订购,但获得&#34;属性的价值&#34; (他们不再是真正的属性)有点困难:

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];
        }
    }
}