将键、值对象转换为 Javascript 中的键、值数组

Converting key,value object to key,value array in Javascript

请参考fiddlejs文件对象obj1。 (我开始使用这种格式的对象,因为它表示当 PHP 回显有序键值 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").

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

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

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

请注意,某些浏览器(例如 Chrome)会按键对对象的属性进行排序,但这是特定于实现的功能,您不应依赖它。 JavaScript 对象属性的顺序是 未定义