私は2つの配列を持っています。最初の単語には単語が含まれ、2番目の単語には重みが含まれます。彼らはインデックスによって関連付けられています。これらの配列を2番目の配列で並べ替えることはできますか?このソート方法は安全に使用できますか?
は、ここで私が試みられてきたものだ:
let words = [
'car',
'house',
'sky',
'dog',
'wheel',
'man',
'tree',
'earth'
];
let weights = [
10,
43,
23,
95,
55,
41,
29,
84
];
let memory = [];
weights.sort((a, b) => {
memory.push(b - a);
return memory[memory.length - 1];
});
words.sort(() => memory.shift());
for (let i = 0; i < words.length; i++) {
console.log(words[i], weights[i]);
}
それが正常に動作しているようです。しかし、私はそれがうまくいかないと思う。理論的に正しいのですか?
注意!私はあなたのアルゴリズムを修正するように求めていません。このような並べ替えの間違いについて、私はあなたに尋ねます。
理由だけではなく、 'word'と' weight'などのキーを持つオブジェクトの1つの配列を作ってみませんか?それはあなたのコードをより明確にするだけでなく、正しく動作することも保証されます。 – Leva7
はい、あなたは正しいです。これは別の方法で行うことができます。それは私には知られています。私は自分のアルゴリズムを最適化するための助けを求めていません。私はそれが適切に動作するのだろうかと思います。それだけです。 – vihtor
はい、動作しない可能性があります。ソートアルゴリズムは常に同じであると想定することはできません。 – Bergi