私は別の配列に基づいて並べ替える配列を持っています。両方の配列が同じ長さの場合、以下のコードは正常に動作します。しかし、私の配列order
が要素を欠いている場合、私はまだそれを新しいソートされた配列の最後に表示したいと思います。あなたが見ることができるように最後に並べ替えられた要素を保持しないで、javascriptの別の配列に基づいて配列を並べ替え
//Source arrays
var order = [{_id: '123', type: '2'},{_id: '123', type: '1'}];
var elements = [{_id: '124', type: '1', name: '(should be last, not sorted)'},{_id: '123', type: '1', name: 'second(should be second)'},{_id: '123', type: '2', name: 'third(should be first)'}];
var sorted = [];
for (var i = 0, len = order.length; i < len; i++) {
var element = elements.filter(function (el) {
\t \t return el.type == order[i]['type'] &&
el._id == order[i]['_id'];
});
sorted.push(element[0]);
}
//Just for testing
var list = document.createElement('ul');
for (var i = 0, len = sorted.length; i < len; i++) {
var item = document.createElement('li');
item.appendChild(document.createTextNode(sorted[i]['name']));
list.appendChild(item);
}
document.getElementById('list').appendChild(list);
<div id="list"></div>
が、今私は私のソートされた配列内の2つの項目があります。ここでは簡単な例です。最後にelements
の不足している商品を追加するにはどうすればよいですか?
'' Sort'内部getOrder'ローカル関数を定義するために、任意の特定の理由は? – Rajesh
@Rajesh、ローカルでのみ使用されているためです。 –
しかし、反復ごとに同じ関数を定義/オーバーライドしない*。これにはパフォーマンス上のメリットもありますか?非常に多くのクエリを申し訳ありません。 – Rajesh