2016-08-21 6 views
-6

observableArray.indexOf(this)のような現在のオブジェクトを取得しようとしているときに、観測可能な配列に10以上の値を追加すると、間違ったインデックス値が返されます。だから、私は新しい可変インデックス値を作成し、以下のように生成します。しかし、私は私の観測配列を降順でソートしたいと思っています。だから、私は以下のようなことをしたい。値に基づいて配列のインデックスをソート

私は

1,20 
    2,40 
    3,10 
    4,50 

以下のような値を持つオブジェクトのリストを持っていると私はノックアウト観測可能に数の多い順に基づいて、私のインデックス値をソートしたい

3,20 
    2,40 
    4,10 
    1,50 

のようになりたいです。

+0

私は期待された結果で、任意の順序が表示されない... – Rayon

+0

@Rayon:数 –

+0

'3,2,4,1'に基づいて指標値の順位を見ることができます.... – Rayon

答えて

0
  • 値に基づいてマップされた配列をソートします。
  • ソートされた配列からのインデックスに基づいて値のインデックスを検索します。

var obj = [{ 
 
    index: 1, 
 
    value: 20 
 
}, { 
 
    index: 2, 
 
    value: 40 
 
}, { 
 
    index: 3, 
 
    value: 10 
 
}, { 
 
    index: 4, 
 
    value: 50 
 
}]; 
 
var sortedArr = obj.map(function(el) { 
 
    return el.value; 
 
}).sort(function(a, b) { 
 
    return b - a 
 
}); 
 
var mapped = obj.map(function(el) { 
 
    var index = sortedArr.indexOf(el.value) + 1; 
 
    el.index = index; 
 
    return el; 
 
}); 
 
console.log(JSON.stringify(mapped,null,4));

関連する問題