从多个数组中创建嵌套对象[关闭]。

问题描述 投票:0回答:1

我有两个数组。一个是想法,另一个是它的审查者。

['idea1', 'idea2', 'idea3', 'idea4', 'idea5', 'idea6', 'idea7']
['reviewer1', 'reviewer2', 'reviewer3', 'reviewer4']

我需要从上述两个数组中生成一个数据对象,并将其送入表中。我需要帮助生成对象。

[ {
   fields: {
     "Idea": "idea1",
     "Reviewer": "reviewer1"
   }, fields: {
     "Idea": "idea2",
     "Reviewer": "reviewer2"
   }, fields: {
     "Idea": "idea3",
     "Reviewer": "reviewer3"
   },  fields: {
     "Idea": "idea4",
     "Reviewer": "reviewer4"
   },  fields: {
     "Idea": "idea5",
     "Reviewer": "reviewer1"
   },  fields: {
     "Idea": "idea6",
     "Reviewer": "reviewer2"
   },  fields: {
     "Idea": "idea7",
     "Reviewer": "reviewer3"
   }, 
}]

一个评审人将被分配给许多想法,但对于任何想法,将只有一个评审人。

javascript arrays object
1个回答
3
投票

类似这样的东西。

const idea = ['idea1', 'idea2', 'idea3', 'idea4', 'idea5', 'idea6', 'idea7']
const reviewer = ['reviewer1', 'reviewer2', 'reviewer3', 'reviewer4']

let ctr =0;
const res = idea.reduce((acc, val)=>{
 ctr= ctr=== reviewer.length? 0 : ctr;
 acc = [...acc, {"fields":{
  "idea": val,
  "reviewer": reviewer[ctr++]
 }}];
  return acc
},[])

console.log(res)

一个更好更简单的方法,你不需要突变。ctr 是这样

var idea = ['idea1', 'idea2', 'idea3', 'idea4', 'idea5', 'idea6', 'idea7'];
var reviewer = ['reviewer1', 'reviewer2', 'reviewer3', 'reviewer4'];

var res = idea.map((idea, i) => {
  return {
    fields: {
      idea,
      reviewer: reviewer[i % reviewer.length]
    }
  }
});

console.log(res)
© www.soinside.com 2019 - 2024. All rights reserved.