代码之家  ›  专栏  ›  技术社区  ›  t3__rry

有没有办法在一行中从数组值设置对象键

  •  2
  • t3__rry  · 技术社区  · 6 年前

    假设我有这样的数组:

    const myArray = ['HP', 'QP', 'PS'];
    

    我想要一个钥匙是 myArray 的价值观

    { HP: 0, QP: 0, PS: 0 }
    

    是否可以在一行中执行以下操作:

    const myObj = {};
    myArray.forEach(item => myObj[item] = 0);
    
    3 回复  |  直到 6 年前
        1
  •  4
  •   CertainPerformance    6 年前

    reduce

    const myArray = ['HP', 'QP', 'PS'];
    const myObj = myArray.reduce((a, key) => Object.assign(a, { [key]: 0 }), {});
    console.log(myObj);
        2
  •  3
  •   Nina Scholz    6 年前

    你可以传播( spread syntax ... Object.assign .

    var keys = ['HP', 'QP', 'PS'],
        object = Object.assign(...keys.map(key => ({ [key]: 0 })));
        
    console.log(object);
        3
  •  2
  •   KooiInc    6 年前

    console.log(
      ['HP', 'QP', 'PS']
        .map( v => ({[v]: 0}) )
        .reduce( (p, n) => ({...p, ...n}), {} )
    );