【问题标题】:Converting key,value object to key,value array in Javascript在Javascript中将键,值对象转换为键,值数组
【发布时间】:2015-05-30 01:59:06
【问题描述】:

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

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

【问题讨论】:

标签: javascript arrays object key


【解决方案1】:

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

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

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

【讨论】:

  • 伊皮!感谢您提供非常快速和正确的解决方案!我替换了 for 循环中的内容,它可以正常工作!
  • @SedesGobhani 欢迎您。通过使用括号表示法,标识符的 value 用于设置属性名称,但使用对象文字语法,标识符的 name 用作属性的名称。跨度>
猜你喜欢
  • 2018-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-18
  • 2017-08-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多