javascript - 如何使用Javascript计算数组中的相邻数字?

标签 javascript arrays sorting arraylist foreach

我的输入是一个像这样的数组:[7, 7, 7, 7, 4, 4, 5, 5, 5, 1, 9, 2, 7, 7]我想将数字组合在一起并将它们相加,但要按邻居,而不是按数组中的总数。所以输出将是:['7:4', '4:2', '5:3', 1, 9, 2, '7:2']我尝试了几种不同的方法,使用 reduce , 并接近但使用内置的 Javascript 方法我最终计算了数组中的 ALL,而不是邻居。

const firstArray = [7, 7, 7, 7, 4, 4, 5, 5, 5, 1, 9, 2, 7, 7];
const masterArray = [];

const unique = new Set (numberArray); // Set {7, 4, 5, 1, 9, 2, 7}
unique.forEach(u => {
  masterArray.push(numberArray.filter(e => e === u));
});

console.log(masterArray);
Set 在这里使用显然是错误的,因为它会获取唯一值并计算它们,但我只想通过邻居来做。那么我想我应该使用 reduce但我遇到了同样的问题。

最佳答案

var test = [7, 7, 7, 7, 4, 4, 5, 5, 5, 1, 9, 2, 7, 7];

console.log(
  test.reduce((acc, element) => {
    if (acc.length && acc[acc.length - 1].key == element) {
      acc[acc.length - 1].count++;
    } else {
      acc.push({ key: element, count: 1 });
    }
    
    return acc;
  }, []).map(element => `${element.key}:${element.count}`)
);

所以逻辑首先将数字减少到一个数组,跟踪最后一个键和计数。只要 key 相同,计数就会增加。一旦 key 发生变化,就会推送一个新对象以开始下一次运行。在reduce完成后,会执行一个map来将key和counts转换成想要的字符串。

关于javascript - 如何使用Javascript计算数组中的相邻数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65131632/

相关文章:

javascript - iOS 的 NativeScript livesync 在启动时失败

javascript - Node + Express JS API 不工作

javascript - Webextension 登录特定页面并一键继续子页面

javascript - 获取嵌套的 JSON

jquery - 将类添加到数组中的第一个元素

sorting - Hadoop 中的 Terasort 调度程序

java - 使用分隔符对数组列表进行排序

c++ - 查找数组的最低元素

c# - 按纬度/经度排序列表

java - 创建一个组合数组,检查其中的一个项目