gpt4 book ai didi

javascript - 如何找到嵌套数组中每个元素出现的最大次数?

转载 作者:行者123 更新时间:2023-11-28 04:19:18 26 4
gpt4 key购买 nike

如何查找嵌套数组中每个元素出现的最大次数?

我正在寻找每个元素在任何子数组中出现的最大次数。我不是在寻找整个嵌套数组中出现次数最多的元素。

假设我的嵌套数组是 [[2, 3, 5], [3, 3, 5], [2, 2, 3, 5]]。

数字 2 在其中一个子数组中出现两次。数字 3 在其中一个子数组中出现两次。数字 5 在子数组之一中出现一次。

我正在寻找的最终结果是[2,2,3,3,5]。

执行此操作的最佳方法是什么?下面是我的做法,不太好。

function makeNewArray(arr) {

// add the # to the numbers that appear once and add the ## to the numbers that appear twice
for (var j = 0; j < arr.length; j++) {
for (var i = 0; i < arr[j].length; i++) {
if (arr[j][i] === arr[j][i+1]) {
arr[j][i] = arr[j][i] + '#';
arr[j][i+1] = arr[j][i+1] + '#';
} else {
arr[j][i] = arr[j][i] + '#';
}
}
}

// flatten the array
arr = arr.reduce(function(a, b) { return a.concat(b); });

// remove the duplicates from the array
arr = arr.filter(function(a, b) { return arr.indexOf(a) == b; });

// remove the ## and # from the array
for (var i = 0; i < arr.length; i++) {
arr[i] = parseInt(arr[i]);
}

return arr;
}

makeNewArray([[2, 3, 5], [3, 3, 5], [2, 2, 3, 5]]);

最佳答案

仅根据您的问题,而不是您期望的我没有真正得到的结果,这是一个可行的解决方案,可以找到最高的出现次数。

var a = [
[2, 3, 5],
[3, 3, 5],
[2, 2, 3, 5]
];
var o = {};
var max = 0;
var highest = null;
for (var i = 0; i < a.length; i++) {
for (var j = 0; j < a[i].length; j++) {
if (!o.hasOwnProperty(a[i][j])) {
o[a[i][j]] = 1;
} else {
o[a[i][j]]++;
}
if (o[a[i][j]] > max) {
max = o[a[i][j]];
highest = a[i][j];
}
}
}
//this is the number with the highest occurence
console.log(highest);

关于javascript - 如何找到嵌套数组中每个元素出现的最大次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45574971/

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