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

Add Dynamic Property To End of Object

本文关键字:对象 添加 动态 属性      更新时间:2023-09-26

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

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 控制台。

对象在

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