【问题标题】:swap object properties javascript交换对象属性 javascript
【发布时间】:2019-01-18 06:58:47
【问题描述】:

如果我有一个对象说

object1 = {
  a: "val1"
  b: "val2",
  c: "val3",
}

我想交换属性来获取

    object1={
        b:"val2"
        a:"val1",
        c:"val3",
        }

提前致谢

【问题讨论】:

  • dito @CertainPerformance

标签: javascript html object


【解决方案1】:

最简单的做法是手动重新排列属性:

var object1 = {
  a: "val1",
  b: "val2",
  c: "val3",
}

object1 = {
  b: object1.b,
  a: object1.a,
  c: object1.c,
}

console.log(object1);

【讨论】:

    【解决方案2】:

    除了 Microsoft IE+ 之外,现有浏览器供应商没有对 JavaScript 对象属性进行排序,也没有维护特定顺序。

    这意味着您根本无法排列或重新排列对象属性。对象键的顺序是任意的,无论如何都不会被维护。这根本不是语言要求,密钥顺序维护决定由实施方决定。

    【讨论】:

    • 我认为反过来是真的?支持 ES6+ do 的浏览器已经定义了属性顺序(如规范所述),但是像 IE 这样实现 ES5 的古老浏览器没有这样的保证。 (如果在 IE 中对属性的迭代是可靠的,那纯属巧合)
    • @CertainPerformance,它实际上不是——事实上 IE 也有一个强大的数组排序,但这不是故意的——IE 在其历史上可靠的数组排序和属性顺序是继承自其他的重用准备好系统模块,很可能不是故意的。但它就在那里。
    • 查看 stackoverflow.com/questions/5525795/… 并查看规范:1 2 规范似乎不同意 For each own property key P of O that is a String but is not an integer index, in property creation order
    • 这是官方的 Ecmascript 规范。。我的印象是没有更高的权限?为什么你认为它是“bs”?老实的问题,如果有一个我不应该信任它的原因,我想知道,因为我写和看了很多 Javascript,所以我想被告知。 (我应该相信什么?)
    • 你是不是生病了?!
    猜你喜欢
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-28
    • 1970-01-01
    • 1970-01-01
    • 2014-11-13
    相关资源
    最近更新 更多