首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >多重for循环问题

多重for循环问题
EN

Stack Overflow用户
提问于 2020-05-25 04:33:53
回答 6查看 59关注 0票数 0

我有两个数组键和subGrps。

使用这两种方法创建具有将键映射到subGrps数组的新数组。

代码语言:javascript
运行
复制
var keys = ["Subgroup", "0-3", "3-10", "11-40"];
var subGrps = ["SP_20k", "SP_40k", "SP_60k"];

var arrayOfObjects = [];

subGrps.forEach(function(id) {
  keys.forEach(function(item) {
    if (item === "Subgroup") {
      arrayOfObjects.push({
        [item]: id
      });
    } else {
      arrayOfObjects.push({
        [item]: ""
      });
    }
  });
});

console.log(arrayOfObjects);

预期产出:

代码语言:javascript
运行
复制
  [{
    "Subgroup" : "SP_20k",
    "0-3": "",
    "3-10": "",
    "11-40": ""
  },
  {
    "Subgroup" : "SP_40k",
    "0-3": "",
    "3-10": "",
    "11-40": ""
  },
  {
    "Subgroup" : "SP_60k",
    "0-3": "",
    "3-10": "",
    "11-40": ""
  }]

forEach是个好选择吗?对keys arraysubGrps array的对象进行分组以获得该输出。

我错过了什么来获得预期的产出?

有人能帮我吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2020-05-25 04:46:46

可以使用Array.mapsubGrps数组进行迭代,创建一个对象,将Subgroup键设置为来自subGrps的值,并使用Object.assignkeys数组中的其他条目添加空值:

代码语言:javascript
运行
复制
var keys = ["Subgroup", "0-3", "3-10", "11-40"];
var subGrps = ["SP_20k", "SP_40k", "SP_60k"];

var arrayOfObjects = subGrps.map(v => Object.assign({
    "Subgroup": v
  },
  ...keys.slice(1).map(k => ({
    [k]: ""
  }))
));

console.log(arrayOfObjects);

这可能会简化为:

代码语言:javascript
运行
复制
var keys = ["Subgroup", "0-3", "3-10", "11-40"];
var subGrps = ["SP_20k", "SP_40k", "SP_60k"];

var arrayOfObjects = subGrps.map(v => Object.assign({},
  ...keys.map(k => ({
    [k]: k == 'Subgroup' ? v : ""
  }))
));

console.log(arrayOfObjects);

票数 1
EN

Stack Overflow用户

发布于 2020-05-25 05:03:20

您可以首先创建对象并在循环中添加键。

代码语言:javascript
运行
复制
var keys = ["Subgroup", "0-3", "3-10", "11-40"];
var subGrps = ["SP_20k", "SP_40k", "SP_60k"];

// creates the object with keys once
// you can also use foreach to create this keysObj too.
var keysObj = keys.reduce((resObj, acc) => {
  resObj[acc] = ''
  return resObj
}, {})

// uses keysObj to generate array of objects
var arrayOfObjects = subGrps.map(subGrp => ({...keysObj, Subgroup: subGrp}))
console.log(arrayOfObjects)
票数 1
EN

Stack Overflow用户

发布于 2020-05-25 04:46:23

尝尝这个,

代码语言:javascript
运行
复制
const arr = [];

subGrps.forEach(subGrp => {
   const obj = {}
   keys.forEach(key => obj[key] = (key === 'Subgroup') ? subGrp : '' );
   arr.push(obj);
})

console.log(arr)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61995853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档