【问题标题】:Incrementing value with a ForEach loop to apply on each element使用 ForEach 循环递增值以应用于每个元素
【发布时间】:2020-10-23 12:05:48
【问题描述】:

寻求有关数组和增量的帮助。

我有一个函数可以将相同的样式应用于数组中的每个新元素,如下所示。

function SnakeBodyLeft(){
  StorePositions.forEach(BodySnake => {
    BodySnake.style.gridRowStart = (Initial_y + y);
    BodySnake.style.gridColumnStart = (Initial_x + x)+1 ;
  });
};

// this results in

StorePositions[0] = BodySnake.style.gridColumnStart = (Initial_x + x)+1 
StorePositions[1] = BodySnake.style.gridColumnStart = (Initial_x + x)+1
StorePositions[2] = BodySnake.style.gridColumnStart = (Initial_x + x)+1

And so on...

我想编写一个函数来执行上面显示的操作,但将每个新元素的值增加 +1 并保留第一个元素的初始值。结果会是这样的:

StorePositions[0] = BodySnake.style.gridColumnStart = (Initial_x + x)+1 
StorePositions[1] = BodySnake.style.gridColumnStart = (Initial_x + x)+2
StorePositions[2] = BodySnake.style.gridColumnStart = (Initial_x + x)+3
StorePositions[3] = BodySnake.style.gridColumnStart = (Initial_x + x)+4

And so on....   

我试图将 1 设为一个名为 i 的变量并将其递增。但是当我这样做时,i 的增量将应用于数组中的所有元素,而不仅仅是新元素。

let i = 1++;

function SnakeBodyLeft(){
  StorePositions.forEach(BodySnake=> {
    BodySnake.style.gridRowStart = (Initial_y + y);
    BodySnake.style.gridColumnStart = (Initial_x + x) + i ;
  });
};


//this results in the incremented value being applied to all elements , not just the new ones .

StorePositions[0] = BodySnake.style.gridColumnStart = (Initial_x + x)+1 
StorePositions[1] = BodySnake.style.gridColumnStart = (Initial_x + x)+1
StorePositions[2] = BodySnake.style.gridColumnStart = (Initial_x + x)+1

or

StorePositions[0] = BodySnake.style.gridColumnStart = (Initial_x + x)+2 
StorePositions[1] = BodySnake.style.gridColumnStart = (Initial_x + x)+2
StorePositions[2] = BodySnake.style.gridColumnStart = (Initial_x + x)+2


基本上,随着索引的增长(0,1,2,3...),索引中每个新元素中的值 i 也应该增长。(0,1,2,3...)。

但我有点卡住了!任何人都可以帮忙吗?

【问题讨论】:

  • 尝试let i = 1;,然后在你的foreach循环中,在底部再添加一行:i++;

标签: javascript arrays foreach increment


【解决方案1】:

试试这个

function SnakeBodyLeft(){
  StorePositions.forEach((BodySnake, i)=> {
    BodySnake.style.gridRowStart = (Initial_y + y);
    BodySnake.style.gridColumnStart = (Initial_x + x) + i;
  });
};

更新 如果您需要从 1 开始递增,请改为:

function SnakeBodyLeft(){
  StorePositions.forEach((BodySnake, i)=> {
    BodySnake.style.gridRowStart = (Initial_y + y);
    BodySnake.style.gridColumnStart = (Initial_x + x) + (i + 1);
  });
};

你可以像forEach(element, index) => { ... }那样为forEach添加一个索引

【讨论】:

  • 那行得通!现在我只需要了解如何 =D 。我假设通过将 I 作为参数放在 ForEach 循环中,他会增加 i??
  • 不错的一个!检查文档here
猜你喜欢
  • 2022-11-05
  • 2014-11-18
  • 2017-12-12
  • 2020-12-01
  • 1970-01-01
  • 2020-06-05
  • 2018-07-31
  • 2019-11-10
  • 2021-08-25
相关资源
最近更新 更多