2016-08-21 4 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 :'3,2,4,1' 할 수있는 숫자 –

+0

에 인덱스 값의 순서를 참조 .... – 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));

관련 문제