Code-kata 7日目
1121 ワード
function getKeyByValue(object, value) {
return Object.keys(object).find(key => object[key] === value);
}
function moreThanHalfObject(nums) {
const result = {};
nums.forEach((x) => {
if (result[x]) {
result[x] = result[x] +1;
}
else {
result[x] = 0 + 1;
}
})
return result
}
function moreThanHalf(nums) {
let obj = moreThanHalfObject(nums);
let arr = Object.values(obj);
let max = Math.max(...arr)
return Number(getKeyByValue(obj, max));
}
どうすればいいか考えて、制作対象を決めました.それぞれの数字をキーに、その数字をvalueとして展開した方が良いと思います.そしてvalueを配列して最大値を求めるのがここから問題です.オブジェクト値のキー値をどのように見つけるかは難しい問題です.配列であればindexOfと同じ方法がありますが・・・Stackoverflowの力を借りました.findの方法で見つけました.
function moreThanHalf(nums) {
const newArray = nums.sort();
const index = Math.floor(newArray.length/2);
return newArray[index];
}
以下、同期の解答を参考にします.意味は非常に簡潔で要約されている.昇順で整理すると、最も頻度の高い数字が自然に中央になります.配列の長さを2で割ると、最大周波数の要素のインデックスになります.Mathは、配列の長さが奇数である可能性があるためです.床に置いてください.Reference
この問題について(Code-kata 7日目), 我々は、より多くの情報をここで見つけました https://velog.io/@klqwrx7004/Code-kata-7일차テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol