gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 15:37:27 25 4
gpt4 key购买 nike

我的输入是一个像这样的数组:[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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com