在Javascript中将key,value对象转换为key,value数组

时间:2015-05-30 01:59:06

标签: javascript arrays object key

请参阅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”)。

这里推荐什么方法?谢谢!

1 个答案:

答案 0 :(得分:2)

是的,当您定义一个对象文字时,指定的键按原样使用。您可以使用使用标识符值的括号表示法。

var obj = {};
obj[keystr] = obj1[keystr];
arr1.push(obj);

请注意,众所周知某些浏览器(如Chrome)会按键对对象的属性进行排序,但它是一项特定于实现的功能,您不应该依赖它。 JavaScript对象的属性顺序为 undefined