빈 문자열, 숫자, "무한", "- 무한"및 "NaN"을 포함하는 배열을 정렬하려고합니다. 문자열의 형태로 모든 값을 받고 있으므로 빈 문자열 인 inf와 nan에 대해서는 sort가 예상대로 작동하지 않습니다. 내 정렬 기능을 오름차순과 내림차순으로 모두 사용자 정의 할 수있는 방법이 있습니까?빈 문자열, NaN, 숫자 및 무한으로 배열을 정렬하는 방법
답변
편집 : 귀하의 의견에 따라 "" < "-inf" < "Nan" < "inf" < ... < -1 < 0 < 1 < ...
. order
어레이를 수정하여이를 변경할 수 있습니다.
배열에 order
배열에없는 요소가 포함되어 있으면이 코드가 제대로 작동하지 않습니다. 이를 위해 가드를 설정하거나 배열에 다른 특수 요소 (예 : 0
)를 추가 할 수 있습니다.
또한 참고 NaN
및 Infinity
(문자열 리터럴이 아님)은 자바 스크립트의 숫자이기도합니다. 이 코드를 사용하면 번호 옆에 주문됩니다.
var basicCompare = function (a, b) {
if (a > b) return 1;
if (a < b) return -1;
return 0;
}
var compare = function (a, b) {
// 0 represents numbers.
var order = ["", "-inf", "Nan", "inf", 0],
orderOfNumber = order.indexOf(0),
orderOfA = typeof(a) === "number" ? orderOfNumber : order.indexOf(a),
orderOfB = typeof(b) === "number" ? orderOfNumber : order.indexOf(b);
if (orderOfA === orderOfNumber & orderOfB === orderOfNumber) {
// They are both numbers, use regular comparison.
return basicCompare(a, b);
}
// They are not both numbers, so use the axiomatic order.
return basicCompare(orderOfA, orderOfB)
}
array.sort(compare);
문자열 비교를 통해 정렬하고자합니다. 이 값을 파싱하고 싶지 않습니다. 그래서 배열에는 문자열과 유효한 숫자가 포함됩니다. 습득하려고하는 순서는 arr = [ "", "-inf", "Nan", "inf", -2, 0, 2, 3]입니다. – nikitha
나는 그 순서를 사용하는 공리를 편집했다. 제발, 코드를 읽고 그것에 대해 아무것도 묻지 않아도됩니다. 나는 그것이 당신이 의미하는 바를한다고 생각합니다. – GMunguia
이것은 항상 "", inf, nan을 문자열로 정렬하고 각 순서에 따라 숫자를 그룹화합니까? – nikitha
개체를 사용하여 정렬 순서를 지정하고 원하는 항목을 원하는 위치로 이동할 수 있습니다.
결과를 예상 무엇var array = ["", 2, 3, 0, "inf", "-inf", "Nan", -1, -100000];
array.sort(function (a, b) {
var order = { "": -4, "-inf": -3, "Nan": -2, "inf": -1 };
return (order[a] || 0) - (order[b] || 0) || a - b;
});
console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }
내 버전이 좋습니까? 귀하의 CSS 주셔서 감사합니다 :)? –
아니요, 숫자는 0으로 그룹화 된 다음 실제 델타로 그룹화됩니다. '-100000'으로 편집하십시오. –
@NinaScholz 아, 알겠습니다. 'a'와'b'가 모두 "inf"인 경우와 같이, 때때로 compare 함수에서'0' 대신에'NaN'을 반환하는 것이 문제인지 알고 있습니까? – Paulpro
- 1. 숫자가 포함 된 숫자 문자열 배열을 정렬하는 방법. (natural ordering)
- 2. 문자열 배열을 숫자 값으로 정렬
- 3. 문자열에 숫자가 들어있는 문자열 배열을 정렬하는 방법
- 4. 숫자 형식 예외 수정 방법 : 빈 문자열
- 5. Vim에서 숫자 및 리터럴 열을 정렬하는 방법
- 6. 다음 다차원 배열을 정렬하는 방법
- 7. PHP는, 배열을 정렬하는 방법?
- 8. 빈칸없이 숫자 배열을 정렬하는 방법은 무엇입니까?
- 9. 숫자 값으로 배열을 정렬하는 방법은 무엇입니까?
- 10. JSON 배열을 정렬하는 방법
- 11. 날짜 배열을 오름차순으로 정렬하는 방법
- 12. 배열 키 (문자열 및 숫자)
- 13. 배열을 정수로 정렬하는 방법
- 14. 개체 배열을 정렬하는 방법?
- 15. 배열을 startTime별로 정렬하는 방법?
- 16. ObjC에서 배열을 정렬하는 방법
- 17. 개체 배열을 정렬하는 방법?
- 18. 배열을 비교하고 정렬하는 방법
- 19. 배열을 정렬하는 방법 - CouchBase
- 20. 연관 배열을 정렬하는 방법?
- 21. 다차원 배열을 정렬하는 방법
- 22. 빈 값은 NaN 결과가됩니다.
- 23. 숫자 열을 기반으로 Parse에서 데이터 배열을 정렬하는 방법
- 24. 빈 배열을 만드는 방법?
- 25. jqgrid의 숫자 열을 정렬하는 방법
- 26. 새 배열없이 배열을 정렬하는 방법?
- 27. 숫자와 텍스트가있는 배열을 정렬하는 방법 (TypeScript/JavaScript)
- 28. VB에서 문자열 배열을 정렬하는 데 문제가 있습니다
- 29. UTF-8 문자열 배열을 정렬하는 방법은 무엇입니까?
- 30. 알파벳으로 문자열 배열을 정렬하는 방법은 무엇입니까?
? 익명 함수는'.name'을 가지지 않습니다; 어떻게 함수가 호출됩니까? 왜'String'''''''''''''''''''''''''''은''Infinity'' 또는''String''''''''''''NaN'' – guest271314
왜 현재 논리를 확장하고 문자열의 값에 따라'result'에 적절한 값을 할당하지 않습니까? –
[Infinity] (https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Infinity), [NaN] (https://developer.mozilla.org/)와 같은 실제 전역을 사용하지 않는 이유는 무엇입니까? fr/docs/Web/JavaScript/Reference/Objets_globaux/NaN) 문자열을 사용하는 대신? – soywod