Cli*_*ote 8 javascript jquery json
我有一个JSON对象,它在页面加载时启动,如下所示:
data[foo] = bar;
data[foo2] = bar2;
data[foo3] = bar3;
Run Code Online (Sandbox Code Playgroud)
有没有办法在第一个元素之前注入foo元素,这样在执行a时for var i in data,新元素将在启动对象时添加的元素之前循环?
原因是,我正在向用户显示一些项目.当用户通过javascript添加新项目时,我希望这个新项目显示在所有现有项目之上,但是当我添加新项目时,即
data[newItem] = newItem;
Run Code Online (Sandbox Code Playgroud)
然后JSON对象如下所示:
data[foo] = bar;
data[foo2] = bar2;
data[foo3] = bar3;
data[newItem] = newItem;
Run Code Online (Sandbox Code Playgroud)
而不是我想要的,这是:
data[newItem] = newItem;
data[foo] = bar;
data[foo2] = bar2;
data[foo3] = bar3;
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
Jos*_*eph 15
在JS中,不保证对象属性的顺序.因此,即使它们在JSON字符串中排序,当被解析为JS对象时,您也永远无法预测它们出现的顺序.
更好地使用数组.您可以使用该unshift()方法将项目放在第一个索引中.
var data = [bar,bar2,bar3];
data.unshift(newItem);
//data = [newItem,bar,bar2,bar3];
Run Code Online (Sandbox Code Playgroud)
小智 8
作为对梦想家约瑟夫的回答的赞美,我在firefox和chrome上进行了一些快速检查.
火狐:
var obj = {};
obj.a = 'a';
obj.c = 'c';
obj.b = 'b';
obj['0'] = '0';
for(var i in obj){
console.log(i);
}
//prints:
a
c
b
0
Run Code Online (Sandbox Code Playgroud)
铬:
var obj = {};
obj.a = 'a';
obj.c = 'c';
obj.b = 'b';
obj['0'] = '0';
for(var i in obj){
console.log(i);
}
//prints:
0
a
c
b
Run Code Online (Sandbox Code Playgroud)
小智 5
我偶然发现了这一点并使用以下方法实现了它:
const newObject = Object.assign({first: value}, oldObject)
如前所述,订单不能保证,但对我来说这已经足够了。:)
| 归档时间: |
|
| 查看次数: |
19306 次 |
| 最近记录: |