ネストされた配列で各要素が最大回数検出される方法を教えてください。ネストされた配列で各要素が最大回数検出される方法を教えてください。
私は、各要素がサブアレイのいずれかで発生する回数の最大数を見つけるために探しています。私は入れ子配列全体で最も多く発生する要素を探しているわけではありません。
のは、私のネストされた配列は、[[2、3、5]、[3、3、5]、[2、2、3、5]。あるとしましょう
番号2は、サブアレイの1つに2回表示されます。番号3は、サブアレイの1つに2回現れる。サブアレイの1つに番号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]]);
どのようにして、[2,3,5,3,2]を得るのですか? – James