我正在创建一个对象并动态设置其属性并将其推送到数组,如下所示:
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控制台以获取示例。
答案 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];
}
}
}