【问题标题】:Creating new Array from previous Array values in a loop在循环中从以前的 Array 值创建新 Array
【发布时间】:2019-08-01 16:56:10
【问题描述】:

我有一个称为组的字符串数组,我正在使用 forEach 循环,我想做的是创建一个新数组,其中每个字符串都是它的名称。

我尝试使用let [group] = [] 创建数组,但这给出了一个标识符组已被声明为错误。任何帮助表示赞赏

代码:

let groups = ['a','b','c']
//forEach loop creates an array for each string in groups
groups.forEach(group => {
            let [group] = []
            //Adding things to new array here
        })
//Each new array from groups is added to an object/array that is returned by the function

【问题讨论】:

  • 你有一些数据和想要的结果吗?为什么不拿一个物体?
  • @NinaScholz 一些基本数据将是组包含类似 ['a' , 'b', 'c'] 的东西,之后会有三个名为 a 、 b 和 c 的数组
  • 您希望如何访问数组?
  • 在创建three arrays named a , b , and c 之后,您是否会像访问javascript 变量一样访问它?如果是这样,那是不可能的
  • @NinaScholz 你到底是什么意思?不确定我是否理解问题

标签: javascript arrays reactjs


【解决方案1】:

不要使用forEach,reduce适用于数组->对象变换:

const myGroups = groups.reduce((acc, group) => {
  let arr = [];
  // add stuff here
  return Object.assign({}, acc, {[group]: arr});
}, {});

这将为您提供一个对象,其中“组”值是键,您创建的任何数组都是值。如果同一个组值出现多次,之前的值将被覆盖。

【讨论】:

  • 你可以直接使用acc[group] = []; return acc; 而不是let arr = []; return Object.assign(acc, {[group]: arr});
  • 避免变异方法是最好不断强化的习惯
  • @bryan60 但Object.assign 是一种变异方法? - Object.assign({}, acc, {[group]: arr}) 不会改变 acc
  • 我的意思是把前面的{} 放进去,现在固定了
【解决方案2】:

示例代码:

a = ['a', 'b', 'c'];
b = {};
a.forEach( x => {
    b[x] = [];
});
console.log(b);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-03
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    • 2017-09-17
    • 1970-01-01
    • 2015-12-31
    相关资源
    最近更新 更多