【问题标题】:How i can can map an large object to an array in es6 [duplicate]我如何将大对象映射到es6中的数组[重复]
【发布时间】:2017-03-08 15:08:46
【问题描述】:

假设我有一个大对象

var object = { a: 1, b: 2, c: 3, d:4, e:5, f:6, g:7, h:8, i:9, j:10 ...};
var array = [];

输出是 [1,2,3,4,5,6,7,8,9,10...]

如何将对象映射到 es6 中的数组? 请帮帮我。

【问题讨论】:

  • 输出应该是什么?
  • 按什么顺序?

标签: javascript ecmascript-6


【解决方案1】:

您可以使用键,对它们进行排序并返回数组中的值。

var object = { a: 1, b: 2, c: 3, d:4, e:5, f:6, g:7, h:8, i:9, j:10};
var array = Object.keys(object).sort().map(k => object[k]);

console.log(array);

【讨论】:

    【解决方案2】:

    您可以使用Object.keys()

    let arr = Object.keys(obj).map((k) => obj[k])
    

    【讨论】:

      【解决方案3】:

      根据您想要支持的浏览器,您可以使用 Object.values() 实现此目的,它是 ECMAScript 2017 的一部分:

      Object.values() 方法返回给定对象自己的可枚举属性值的数组,其顺序与 for...in 循环提供的顺序相同...

      ——MDN's Documentation on Object.values()

      var
        obj = { a: 1, b: 2, c: 3, d:4, e:5, f:6, g:7, h:8, i:9, j:10 },
        values = Object.values(obj)
      ;
      
      console.log(values);

      【讨论】:

      • 问题被标记为ecmascript-6,并在标题中指定in es6...
      • @trincot 我很清楚;我标记了它。这就是为什么我在回答前提到这使用了 ECMAScript 2017 中定义的方法,以防 OP 也能够使用它。您的评论有点没有实际意义,因为您将其标记为与要求 jQuery 解决方案的重复。
      • 副本询问 “有没有更好的方法将对象转换为数组或函数?” 没有提到 jQuery 作为要求。我选择了那个副本,因为投票最高的答案是纯 JS 解决方案,可以作为 OP 问题的答案。我觉得合适。
      • 哇。有趣。
      【解决方案4】:

      试试这个简单的方法

      var object = { a: 1, b: 2, c: 3, d:4, e:5, f:6, g:7, h:8, i:9, j:10};
      var array = Object.keys( object ).map( function(key){ return object[key] } );
      console.log(array);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-03-19
        • 1970-01-01
        • 2019-08-25
        • 1970-01-01
        • 2017-03-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多