首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >js在数组中添加一个新元素

js在数组中添加一个新元素
EN

Stack Overflow用户
提问于 2022-08-31 17:32:57
回答 3查看 38关注 0票数 -1

我正在开发节点js应用程序,我面临的问题是必须在数组中添加位置点,但是每个位置点是不同的,比如第一个数组/对象需要10个,然后下一个数组/对象必须是7个。

代码语言:javascript
复制
let converter = [
  { name: 'team-1', killPoint: 8 },
  { name: 'team-2', killPoint: 7 },
  { name: 'team-7', killPoint: 56 },
  { name: 'team-9', killPoint: 68 }
]
const pointsystem = [10, 7, 6, 5, 4, 3, 2, 1, 0];
const positionAdd = (objects) => {
  let i = 0
  const posRes = {};
  objects.forEach(({
    name,
    killPoint
  }) => {
    posRes[name] = posRes[name] || {
      name,
      positionPoint: 0,
      killPoint: 0,
    };
    posRes[name].positionPoint = pointsystem[i+1];
    posRes[name].killPoint = killPoint;
  });
  return Object.values(posRes);
};
console.log(positionAdd(converter));

尝试使用这段代码,但它的工作不像需要的那样

输出不足

代码语言:javascript
复制
[
  { name: 'team-1', positionPoint: 10, killPoint: 8 },
  { name: 'team-2', positionPoint: 7, killPoint: 7 },
  { name: 'team-7', positionPoint: 6, killPoint: 56 },
  { name: 'team-9', positionPoint: 5, killPoint: 68 }
]

如果有更多的队伍,那么点应该持续到0.

EN

回答 3

Stack Overflow用户

发布于 2022-08-31 17:54:29

使用map()而不是附加到结果数组。

使用回调函数的第二个参数获取数组索引,并使用该参数对pointsystem进行索引。

使用对象扩展语法将其合并到来自converter的对象中。

代码语言:javascript
复制
let converter = [
  { name: 'team-1', killPoint: 8 },
  { name: 'team-2', killPoint: 7 },
  { name: 'team-7', killPoint: 56 },
  { name: 'team-9', killPoint: 68 }
]
const pointsystem = [10, 7, 6, 5, 4, 3, 2, 1, 0];
const positionAdd = (objects) => objects.map((obj, i) => ({...obj, positionPoint: pointsystem[i]}));

console.log(positionAdd(converter));

票数 1
EN

Stack Overflow用户

发布于 2022-08-31 17:56:59

以下内容还将更改原始对象。我不知道OP的目的是:

代码语言:javascript
复制
const data = [
  { name: 'team-1', killPoint: 8 },
  { name: 'team-2', killPoint: 7 },
  { name: 'team-7', killPoint: 56 },
  { name: 'team-9', killPoint: 68 }
],points = [10,7,6,5,4,3,2,1,0];
console.log(data.map((d,i)=>{
 d.positionPoint=points[i]??0;
 return d;
}));

票数 1
EN

Stack Overflow用户

发布于 2022-08-31 17:53:57

您正在向变量i中添加1,而不是在每个循环之后实现i。每次迭代后,您需要将i增加1。

示例:

代码语言:javascript
复制
posRes[name].positionPoint = pointsystem[i];
i += 1;

测试:

代码语言:javascript
复制
let converter = [
  { name: 'team-1', killPoint: 8 },
  { name: 'team-2', killPoint: 7 },
  { name: 'team-7', killPoint: 56 },
  { name: 'team-9', killPoint: 68 }
]
const pointsystem = [10, 7, 6, 5, 4, 3, 2, 1, 0];
const positionAdd = (objects) => {
  let i = 0
  const posRes = {};
  objects.forEach(({
    name,
    killPoint
  }) => {
    posRes[name] = posRes[name] || {
      name,
      positionPoint: 0,
      killPoint: 0,
    };
    posRes[name].positionPoint = pointsystem[i];
    i += 1;
    posRes[name].killPoint = killPoint;
  });
  return Object.values(posRes);
};
console.log(positionAdd(converter));

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

https://stackoverflow.com/questions/73559790

复制
相关文章

相似问题

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