请参阅fiddle js文件对象obj1。 (我开始使用这种格式的对象,因为它表示当我回复一个有序键,值为PHP数组时,我从Ajax返回的内容。)
var obj1 = {
"key1": "val1",
"key2": "val2",
"key3": "val3"
};
box1.innerText = "Object: " + JSON.stringify(obj1);
var arr1 = [];
for( keystr in obj1 ) {
box2.innerText = keystr;
valstr = obj1[keystr];
arr1.push({keystr : valstr});
}
box3.innerText = "Array: " + JSON.stringify(arr1);
对于那些问我为什么要这样做的人:因为我想知道我是否可以保留顺序(我听说js对象没有被命令?)并且因为它恰好是函数所需的格式我将把数据传递给下一个。
正如您所看到的那样,标识符(即“keystr”)将被用于密钥,而不是字符串本身(即“key1”,“key2”,“key3”)。
这里推荐什么方法?谢谢!
答案 0 :(得分:2)
是的,当您定义一个对象文字时,指定的键按原样使用。您可以使用使用标识符值的括号表示法。
var obj = {};
obj[keystr] = obj1[keystr];
arr1.push(obj);
请注意,众所周知某些浏览器(如Chrome)会按键对对象的属性进行排序,但它是一项特定于实现的功能,您不应该依赖它。 JavaScript对象的属性顺序为 undefined 。