根据值对数组的索引进行排序

时间:2016-08-21 04:39:03

标签: javascript jquery knockout.js

当我在我的observable数组中添加10个以上的值时,我得到了错误的索引值,当我试图获取像observableArray.indexOf(this)这样的当前对象时。所以我创建了新的变量索引值并生成如下例子。但是在输入时我想按降序排序我的可观察数组。所以我想做一些类似下面的例子。

我有对象列表,其值如下所示

sort($a);

我想要像

这样的结果
    1,20
    2,40
    3,10
    4,50

我想根据knockout observable中数字的降序对索引值进行排序。

1 个答案:

答案 0 :(得分: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));