【问题标题】:Destructure object into an array将对象解构为数组
【发布时间】:2019-10-23 02:36:43
【问题描述】:

我有这个对象

const foo = {
    a: 'kitten',
    b: 'puppy',
    c: 'lion'
};

将其解构为变量是这样的

const { a, b, c } = foo;

是否有一种单行方法如何将其分解为数组,以便结果为

const array = [a, b, c];

【问题讨论】:

  • 是否始终保证键按词汇顺序升序?
  • const array = Object.values(foo)const array = ["a", "b", "c"].map((key) => foo[key]) 怎么样?我不知道使用解构的单行代码。
  • @byxor 不。他们不是。
  • @SebastianSimon 我不知道Object.values() 函数。一样好!

标签: javascript destructuring


【解决方案1】:

据我所知,没有使用解构的“单行”。

您可以改用其中一种(使用解构):

(1)

const array = [foo.a, foo.b, foo.c]

(2,正如@Sebastian Simon 所指出的)

const array = Object.values(foo);

(3,正如@Sebastian Simon 指出的那样)

const array = ['a', 'b', 'c'].map(k => foo[k]);

【讨论】:

  • 选项 1 和 3 保证提供的订单。
  • 正确。唯一的缺点是:你需要提前知道密钥。
【解决方案2】:

您可以获取一个函数,解构所需的属性并返回一个具有所需顺序的数组。

const
    getABC = ({ a, b, c }) => [a, b, c],
    foo = { a: 'kitten', b: 'puppy', c: 'lion' };

console.log(getABC(foo));

【讨论】:

    【解决方案3】:

    没有从对象解构到数组中。

    但是如果你想要一个数组格式的对象的所有键/值,你可以使用这些:

    let obj = {
        a: 'kitten',
        b: 'puppy',
        c: 'lion'
    };
    
    let keyArray = Object.keys(obj); 
    // keyArray = ['a','b','c']
    let valuesArray = Object.values(obj);
    // valuesArray = ['kitten', 'puppy', 'lion'];
    

    请注意,数组的顺序并不保证遵循对象的顺序。

    【讨论】:

      【解决方案4】:
         Object.entries(obj).forEach( ([key, value]) => { 
         console.log(`${key}: ${value}`) 
      
      • 这里,Object.entries() 给出键数组:值对。您可以根据自己的要求使用结果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-11
        • 2021-03-15
        • 2016-11-09
        • 1970-01-01
        • 1970-01-01
        • 2020-05-02
        • 2020-02-18
        • 2017-07-24
        相关资源
        最近更新 更多