gpt4 book ai didi

javascript - JS 按组对数组值进行分组

转载 作者:行者123 更新时间:2023-11-28 19:41:34 25 4
gpt4 key购买 nike

我无法将数组值保存到组中:

我有一个像这样的数组:

 ["0", "2", "8", "8", "8", "8", "8", "8", "2", "9", "9", "9", "9", "9", "2", "10", "10", "10", "10", "10", "10", "10", "10", "0", "3", "11", "11",.....]

我需要的是对值进行分组并保存到对象,如下所示:

{0 = 1, 2 = 1, 8 = 6, 2 = 1, 9 = 5, 2 = 1, 10 = 9, 0 = 1,...}

我尝试了多种方法,但没有成功

var max = 0;
var group = {};
for (var i = items.length; --i >= 0; ) {
var value = items[i];
var n = group[value] = 1 - -(group[value] | 0);
if (n > max) {
max = n;
}
}

此返回所有求和值,例如:{0=6, 2=7,...}

这也会返回错误的结果:

var j = 1,
value = 0,
valueArray = {};

for (i = 0; i <= items.length; i++) {
if (value == items[i]) {
j++;
} else {
valueArray[j] = value;
j = 1;
}
value = items[i];
}

有什么建议吗?

最佳答案

我认为你试图在 JS 中实现的目标是不可能的 - 根据你所写的内容,你的输出对象将具有,例如,两个值为 0 的键(或三个值为 2 的键)

什么是可能的,确实是分组,但不是根据您提供的输出:

let input = ["0", "2", "8", "8", "8", "8", "8", "8", "2", "9", "9", "9", "9", "9", "2", "10", "10", "10", "10", "10", "10", "10", "10", "0", "3", "11", "11"];

let output = [];
for (let i=0; i<input.length; i++)
{
if (!output[output.length-1] || output[output.length-1].value !== input[i])
output.push({value: input[i], times: 1})
else
output[output.length-1].times++;
}

console.log(output);

fiddle :http://jsfiddle.net/UCbkz/

在输出数组中,您最终会得到输入数组中的数字组,因此:

  • 0 => 值:0,次数:1
  • 1 => 值:2,次数:1
  • 2 => 值:8,次数:6
  • 3 => 值:2,次数:1
  • ...

关于javascript - JS 按组对数组值进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24919074/

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