在JavaScript中,如何在没有for循环的情况下计算对象数组中的值差?

说我有一个对象数组:

const peopleArray = [
{
 'date': '3/1',
 'people': 0
},
{
 'date: '3/2',
 'people': 5
},
{
 'date: '3/3',
 'people': 8
},
...
];

我正在尝试绘制图表以显示人数之间的每日差异,因此我需要以下对象数组:

[{ 
 'date': '3/1,
 'diff': 0 // Shows 0 the first day.
},
{
 'date': '3/2',
 'diff': 5 // 5 people joined.
},
{
 'date': '3/3',
 'diff': 3 // 3 more people joined.
},
...
];

我知道我可以Array.push()通过for循环来实现

const peopleArray = [{
    date: '3/1',
    people: 0
  },
  {
    date: '3/2',
    people: 5
  },
  {
    date: '3/3',
    people: 8
  }
];

let diffArray = [];

for (i = 0; i < peopleArray.length; i++) {
  if (i === 0) {
    // Shows 0 the first day
    diffArray.push({
      date: peopleArray[i].date,
      diff: 0
    });
  } else {
    diffArray.push({
      date: peopleArray[i].date,
      diff: peopleArray[i].people - peopleArray[i - 1].people
    });
  }
}

console.log(diffArray);

但有一个更清洁的方式使用要做到这一点map()reduce()或任何这些阵列的功能呢?

路易斯·拉玛略(LuísRamalho)

您可以使用map()并做类似的事情:

const peopleArray = [
  {
    date: "3/1",
    people: 0,
  },
  {
    date: "3/2",
    people: 5,
  },
  {
    date: "3/3",
    people: 8,
  },
];

let diffArray = peopleArray.map((o, i, a) => ({
  date: o.date,
  diff: i > 0 ? o.people - a[i - 1].people : 0,
}));

console.log(diffArray);

map()它接受三个参数的回调函数:

  1. currentValue -数组中正在处理的当前元素;
  2. index -数组中正在处理的当前元素的索引:
  3. array -调用了数组映射。

因此,您可以使用这些参数来实现与for循环相同的功能。

reduce()是不是真的你在这种情况下,寻找什么,因为你需要的不仅仅是一个单一的产值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在没有UDF的情况下如何计算PySpark数据帧中数组列中的尾随零

如何在没有要映射的对象数组的情况下循环和渲染React.js中的元素?

如何在没有任何循环语句的情况下获取数组中多个文件的值

在Java中给定约束的情况下,如何计算对象数组的最大值组合?

如何在不使用循环的情况下将数组转换为Javascript中的对象?

如何在没有$ index的情况下计算嵌套ng-repeat中的项目

在Vue JS watcher中如何在没有无限循环的情况下更改对象的属性?

如何在不循环的情况下使用现有数组值中的动态键映射新数组?

如何在不循环的情况下访问对象数组中的所有键和值

如何在没有任何循环的情况下获取php中的特定键数组

如何在没有foreach循环的情况下用List <string>中的“ NULL”替换null?

JavaScript:如何在不使用for..in循环的情况下,从给定ID的对象数组中获取对象?

在没有循环的情况下计算 R 中的总和

如何在没有循环的情况下获取 Javascript 对象的所有键

Javascript如何在没有提醒的情况下循环显示十除法计算

如何在不迭代数组的情况下提取对象数组中特定键的值?

如何在Python 3中没有for循环的情况下访问数组列表中的第一项?

在没有 scipy 的情况下计算二值化图像中的对象

如何在没有for循环的情况下访问列表中类的属性

如何在没有内置方法的情况下获取用逗号分隔的对象数组中的所有值和键

如何在没有数组和循环的情况下仅打印 preg_match_all 中第 2 组的值

在没有每个循环的情况下计算输入值

在没有循环和突变的情况下计算 JavaScript 中的重复字符

如何在没有内置函数的情况下计算列表中的字符串长度?

我如何在 javascript 中没有嵌套 for 循环的情况下解决这种情况

如何在不使用任何循环的情况下计算字符数组中字符的长度?

在javascript中没有键的情况下将对象推入数组

如何在没有任何空格的情况下计算熊猫中的令牌

如何在没有 awk 的情况下计算 Bash 中的行总和?