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

在Javascript中将键、值对象转换为键、值数组,javascript,arrays,object,key,Javascript,Arrays,Object,Key,请参考js文件对象obj1。(我从一个这种格式的对象开始,因为它代表了当PHP回显一个有序的键、值和PHP数组时我从Ajax得到的结果) 对于那些问我为什么要这样做的人:因为我想看看我是否能保持顺序(我听说js对象没有顺序?),因为它恰好是函数参数所需的格式,我将把数据传递给下一个 正如您所看到的,标识符(即“keystr”)用于键,而不是字符串本身(即“key1”、“key2”、“key3”) 这里推荐什么方法?谢谢 是,当定义对象文字时,指定的键按原样使用。您可以使用括号表示法,它使用标识符

请参考js文件对象obj1。(我从一个这种格式的对象开始,因为它代表了当PHP回显一个有序的键、值和PHP数组时我从Ajax得到的结果)

对于那些问我为什么要这样做的人:因为我想看看我是否能保持顺序(我听说js对象没有顺序?),因为它恰好是函数参数所需的格式,我将把数据传递给下一个

正如您所看到的,标识符(即“keystr”)用于键,而不是字符串本身(即“key1”、“key2”、“key3”)


这里推荐什么方法?谢谢

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

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

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

哎呀!感谢您提供快速正确的解决方案!我替换了for循环中的内容,它就可以工作了@塞德斯戈巴尼:不客气。通过使用括号表示法,标识符的值用于设置属性名称,但使用对象文字语法,标识符的名称用作属性名称。自es6以来,您可以写入
arr1.push({[keystr]:valstr})
var obj = {};
obj[keystr] = obj1[keystr];
arr1.push(obj);