我有下面的数组。为数组做了 console.log,如下所示
(3) [Array(4), Array(4), Array(4)]
0 ["jackpot", "cherry", "bar", "pear"]
1 ["raspberry", "raspberry", "raspberry", "lemon"]
2 ["plum", "crown", "lemon", "jackpot"]
我尝试了下面的操作,在控制台中我只看到我的数组和它旁边的 1
var counts = {};
currentResults.forEach(function(obj) {
var key = JSON.stringify(obj)
counts[key] = (counts[key] || 0) + 1
})
console.log(counts);
我如何在上面的数组/对象中搜索和查找重复值,并计算我使用 javascript/jquery 有多少重复项?
最佳答案
给你一个解决方案
var data = [["jackpot", "cherry", "bar", "pear"], ["raspberry", "raspberry", "raspberry", "lemon"],["plum", "crown", "lemon", "jackpot"]];
var key = {};
for(var i=0; i<data.length; i++){
for(var j=0; j<data[i].length; j++){
if(typeof key[data[i][j]] === 'undefined'){
key[data[i][j]] = 1;
} else {
key[data[i][j]] = parseInt(key[data[i][j]]) + 1;
}
}
}
console.log(key);
我假设您的数据是数组的数组。遍历数组并针对每个项目,以 JSON
(键:值)的形式保存计数。
键作为项目,值是计数。
更新解决方案以获取重复项目
var data = [["jackpot", "cherry", "bar", "pear"], ["raspberry", "raspberry", "raspberry", "lemon"],["plum", "crown", "lemon", "jackpot"]];
var key = {};
var duplicate = [];
for(var i=0; i<data.length; i++){
for(var j=0; j<data[i].length; j++){
if(typeof key[data[i][j]] === 'undefined'){
key[data[i][j]] = 1;
} else {
key[data[i][j]] = parseInt(key[data[i][j]]) + 1;
if(parseInt(key[data[i][j]]) >= 3 && duplicate.indexOf(data[i][j]) == -1){
duplicate.push(data[i][j]);
}
}
}
}
console.log(duplicate);
更新了在子数组中查找重复项的解决方案
var data = [["jackpot", "cherry", "bar", "pear"], ["raspberry", "raspberry", "raspberry", "lemon"],["plum","jackpot", "crown", "lemon", "jackpot", "jackpot"]];
var key = {};
var duplicate = [];
for(var i=0; i<data.length; i++){
key = {};
for(var j=0; j<data[i].length; j++){
if(typeof key[data[i][j]] === 'undefined'){
key[data[i][j]] = 1;
} else {
key[data[i][j]] = parseInt(key[data[i][j]]) + 1;
if(parseInt(key[data[i][j]]) >= 3 && duplicate.indexOf(data[i][j]) == -1){
duplicate.push(data[i][j]);
}
}
}
}
console.log(duplicate);
希望对您有所帮助。
关于javascript - 我如何在 javascript 对象中查找和计算重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46320447/