【问题标题】:How to convert an Array to Array of objects with same keys in Javascript? [duplicate]如何在Javascript中将数组转换为具有相同键的对象数组? [复制]
【发布时间】:2021-03-08 06:11:58
【问题描述】:

考虑一个包含一组值的简单数组。

var arr = ['ab', 'cd', 'ef'];

我想把上面的数组转换成,

[
  { name: 'ab' },
  { name: 'cd' },
  { name: 'ef' }
];

我尝试过的:

arr.reduce((a, c) => ((a[c] = c), a), {});

【问题讨论】:

  • arr.map(name => ({ name }))

标签: javascript arrays object


【解决方案1】:

您可以使用Array.map 来执行此操作,它允许您指定一个函数,该函数返回一个新项目以替换数组。

arr.map(o => ({ name: o }))

这是一个没有花哨的箭头函数的简写,以防你感到困惑。

arr.map(function(o) {
   return {
      name: o,
   }
})

【讨论】:

    【解决方案2】:

    你试过了:arr.reduce((a, c) => ((a[c] = c), a), {});

    你的代码有2个问题:

    1. {}:initialValue 应该是 Array
    2. (a[c] = c:您要定义特定的name 而不是每个c

    The .reduce syntax

    arr.reduce(callback(accumulator, currentValue, [, index[, array]])[, 初始值])

    完成解决方案.reduce应该是这样的:

    const arr = ['ab', 'cd', 'ef'];
    
    const result = arr.reduce((acc, currItem) => {
      acc.push({name: currItem});
      return acc;
    }, []);
    console.log(result);

    或者像这样.map()

    const arr = ['ab', 'cd', 'ef'];
    
    const result = arr.map(item => ({name: item}));
    console.log(result);

    【讨论】:

      【解决方案3】:

      使用With Object.fromEntries, you can convert from Array to Object的另一种方式

      const arr = ['ab', 'cd', 'ef'];
      
      const result = arr.map(item => Object.fromEntries([["name",item]]));
      
      console.log(result);

      【讨论】:

        【解决方案4】:

        您可以使用 forEach() 并创建一个新的对象数组来推送每个新对象。

        var arr = ['ab', 'cd', 'ef'];
        
        const newObjArr = [];
        
        arr.forEach((str) => newObjArr.push({ name: str }))
        
        console.log(newObjArr); //[ { name: 'ab' }, { name: 'cd' }, { name: 'ef' } ]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-11-30
          • 2022-01-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多