Javascript 按组列出的JS组数组值
我无法将数组值保存到组中: 我有这样一个数组:Javascript 按组列出的JS组数组值,javascript,jquery,Javascript,Jquery,我无法将数组值保存到组中: 我有这样一个数组: ["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,...} 我需要的是将值分组
["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,...}
我需要的是将值分组并保存到对象,如下所示:
["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];
}
var j=1,
值=0,
valueArray={};
对于(i=0;i使用此
var values = ["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"]
var counts = {};
_.each(values, function(v, i) {
if (counts[v]) {
counts[v] ++;
} else {
counts[v] = 1;
}
});
console.log(counts);
在这里演奏小提琴…使用这个
var values = ["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"]
var counts = {};
_.each(values, function(v, i) {
if (counts[v]) {
counts[v] ++;
} else {
counts[v] = 1;
}
});
console.log(counts);
在这里演奏小提琴…您可以使用:
var arr= ["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"];
var newObj = {}
for(var i = 0; i < arr.length; i++){
newObj[arr[i]] = ++newObj[arr[i]] || 1;
}
console.log(newObj);
var arr=[“0”、“2”、“8”、“8”、“8”、“8”、“8”、“2”、“9”、“9”、“9”、“9”、“2”、“10”、“10”、“10”、“10”、“0”、“3”、“11”、“11”];
var newObj={}
对于(变量i=0;i
您可以使用以下功能:
var arr= ["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"];
var newObj = {}
for(var i = 0; i < arr.length; i++){
newObj[arr[i]] = ++newObj[arr[i]] || 1;
}
console.log(newObj);
var arr=[“0”、“2”、“8”、“8”、“8”、“8”、“8”、“2”、“9”、“9”、“9”、“9”、“2”、“10”、“10”、“10”、“10”、“0”、“3”、“11”、“11”];
var newObj={}
对于(变量i=0;i
基于Trent答案的本机Javascript解决方案:
var values = ["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"]
var counts = {};
values.forEach(function (v) {
if (counts[v]) counts[v]++;
else counts[v] = 1;
});
基于Trent答案的本机Javascript解决方案:
var values = ["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"]
var counts = {};
values.forEach(function (v) {
if (counts[v]) counts[v]++;
else counts[v] = 1;
});
我认为您试图在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);
let input=[“0”、“2”、“8”、“8”、“8”、“8”、“2”、“9”、“9”、“9”、“9”、“2”、“10”、“10”、“10”、“10”、“0”、“3”、“11”、“11”];
让输出=[];
例如(设i=0;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);
let input=[“0”、“2”、“8”、“8”、“8”、“8”、“2”、“9”、“9”、“9”、“9”、“2”、“10”、“10”、“10”、“10”、“0”、“3”、“11”、“11”];
让输出=[];
例如(让我=0;我听说过hashmap?@kickbutowski你知道我们在这里处理javascript吗?没有显式的HashMaps,但对象实现类似。这意味着他已经在使用它们。那么:HashMaps如何解决问题呢?首先,我不知道为什么我的@不起作用。其次,你是对的:)你听说过hashmap吗?@KickButtowski你知道我们在这里处理javascript吗?没有显式的hashmap,但对象实现类似。这意味着他已经在使用它们。那么:HashMaps如何解决问题呢?第一,我不知道为什么我的@不起作用。第二,你是对的:)与jquery相同-只需更改v
和i
就可以了。哦……很好的一点,@eithedog。我应该提到我正在使用下划线.js进行循环。循环也可以用纯javascript完成……没有什么特别的地方。值。forEach
是本机javascript。这里不需要下划线或jquery。@Trenthis还返回所有总值计数{0=2,2=3,…}
,但不返回我在示例{0=1,2=1,8=6,2=1,9=5,2=1,10=9,0=1,…}中提供的组计数
@DeividasJJ-抱歉…我误解了这个问题。我不理解你提供的输出。如果不是每个值的计数,那么组计数是多少?你能解释一下吗?让我哑口无言吗?jquery也一样-只需更改v
和I
就行了。哦…好的一点,@eithedog。我应该提到我正在使用下划线.js作为循环。循环也可以用纯javascript完成…没有什么特别的地方。值。forEach
是本机javascript。这里不需要下划线或jQuery。@Trent这也会返回所有总值计数{0=2,2=3,…}
,但不返回我在示例中提供的组计数{0=1,2=1,8=6,2=1,9=5,2=1,10=9,0=1,…}
@DeividasJJ-对不起…我误解了这个问题。我不理解你提供的输出。如果不是每个值的计数,组计数是什么?你能解释一下吗?给我哑一下吗?Gagnon这个返回总值计数{0=2,2=3,…},但不是我在示例{0=1,2=1,8=6,2=1,9=5,2=1,10=9,0=1,…}@DeividasJJ中提供的组计数。好的,您不能有一个具有2倍相同键的对象…您想要的(如所述)是不可能的…Gagnon这返回总值计数{0=2,2=3,…},但不是我在示例中提供的组计数{0=1,2=1,8=6,2=1,9=5,2=1,10=9,0=1,…}@DeividasJJ好吧,你不能有一个具有2倍相同键的对象…你想要的(如所描述的)是不可能的…谢谢你,这正是我需要的谢谢你,这正是我需要的