>웹 프론트엔드 >JS 튜토리얼 >Array.sort()는 다양한 브라우저에서 안정적인가요?

Array.sort()는 다양한 브라우저에서 안정적인가요?

Linda Hamilton
Linda Hamilton원래의
2024-11-02 13:38:30262검색

Is Array.sort() stable across different browsers?

다른 브라우저에서 Array.sort()의 안정성은 무엇입니까?

Array.sort() 메서드의 안정성은 무엇입니까? 정렬 후 동일한 요소의 순서가 유지되는지 여부를 결정하며 브라우저마다 다릅니다.

ES2019부터 정렬 방법은 안정적이어야 합니다.

이는 다음을 의미합니다. 배열의 동일한 요소는 정렬 후에도 상대 순서를 유지합니다.

ES2019 이전에는 안정성이 브라우저에 따라 다릅니다.

  • IE 6 : 안정적
  • Firefox < 3: 불안정
  • Firefox >= 3: 안정
  • Chrome < 70: 불안정
  • Chrome >= 70: 안정
  • Opera < 10: 불안정
  • Opera >= 10: 안정
  • Safari 4: 안정
  • Edge: 512개 이상의 요소가 있는 배열의 경우 불안정함

일부 Chrome 버전은 배열 크기에 따라 안정적인 정렬과 불안정한 정렬 간에 전환된다는 점에 유의하세요.

Chrome 70 이전에는 엔진이 작은 배열에 대해 안정적인 정렬을 사용하고 더 큰 배열에 대해 불안정한 정렬을 사용했습니다. 이는 다음 테스트 사례를 사용하여 확인할 수 있습니다.

<code class="js">function Pair(_x, _y) {
  this.x = _x;
  this.y = _y;
}
function pairSort(a, b) {
  return a.x - b.x;
}
// Create an array with enough entries to trigger the "more efficient" sort method
var y = 0;
var check = [];
while (check.length < 100) {
  check.push(new Pair(Math.floor(Math.random() * 3) + 1, ++y));
}
check.sort(pairSort);
// Check for instability by comparing the order of equal elements
var min = {};
var issues = 0;
for (var i = 0; i < check.length; ++i) {
  var entry = check[i];
  var found = min[entry.x];
  if (found) {
    if (found.y > entry.y) {
      console.log("Unstable at " + found.i + ": " + found.y + " > " + entry.y);
      ++issues;
    }
  } else {
    min[entry.x] = {x: entry.x, y: entry.y, i: i};
  }
}
// Log stability status
if (!issues) {
  console.log("Sort appears to be stable");
}</code>

이 테스트는 이전 버전의 Chrome 및 불안정한 정렬을 구현한 기타 브라우저의 불안정성을 보여줍니다.

위 내용은 Array.sort()는 다양한 브라우저에서 안정적인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.