당신은 정말 종류의 방법은 자바 스크립트에서 사용됩니다

  일반적인 비즈니스 개발에서, 배열 (배열) 다음 정렬 어레이는 기본적 방법 JS 배열을 사용하여 배열 데이터의 배열을 통해 루프를 사용하여 제거하는 통상적 인 방법, 우리는 자주 사용되는 데이터 타입 정렬 배치 할 (예, 힘은 상대적으로 기본 JS를 옹호하고있다).

인터뷰 질문 - 객체가 배열 유형 설명 링크가 있는지 여부를 확인하는 방법

밤 1.

  어레이 방법은 직접 정렬에 사용될 수있다 : 인해 역방향 () 메소드) (역 정렬 ()와 충분히 만 정렬 () 메소드 유연하지 않다. 기본적으로, 상기 어레이의 정렬 () 메소드는 오름차순으로 배열된다.

var arr=[1,3,5,9,4];
console.log(arr.sort());
// 输出: [1, 3, 4, 5, 9]

이어서 발견 된 데이터는 큰 문제가되지 오름차순으로 배열되고, 따라서, 어레이는 다음 읽어 var arr=[101,1,3,5,9,4,11];분류 결과를 인쇄하도록 정렬 () 메소드를 호출하기 전에.

var arr=[101,1,3,5,9,4,11];
console.log(arr.sort());
// 输出: [1, 101, 11, 3, 4, 5, 9]

이 시간은 101,11 3의 배열이 때문에 앞 순위가 발견 배열의 모든 항목이 숫자 인 경우에도, 종류 () 메서드를 정렬하는 방법을 결정 결과 문자열 비교 다음의 toString 배열 () 변환 방법 및 호출 정렬 () 메소드는 문자열 비교이다.

는 유니 코드 문자열 인코딩에 따라 소형에서 대형에 얼마나 그런 다음 문자열은 일종의이다. 여기서 우리는 유니 코드 인코딩 모양의 배열의 각각을 인쇄 해 봅니다.

...
// 转码方法
function getUnicode (charCode) {
    return charCode.charCodeAt(0).toString(16);
}
// 打印转码
arr.forEach((n)=>{
  console.log(getUnicode(String(n)))
});

// 输出: 31 31 31 33 34 35 39

놀랍게도, 유니 코드 문자열 (31)을 인코딩 1,101,11

도 2는, 비교 함수는 지정된 순서로 전달

  이러한 연구 결과 정렬 () 메소드는 우리가 원하는 순서, 다음, 어떻게 그것을 해결하기 위해 정렬되지 않은 종류의 () 메소드는 값의 앞에 위치하는 값을 지정하는 인수로 비교 함수를 취할 수 있습니다 .

첫 번째 파라미터는 제 2 정수 리턴 뒤에 첫 번째 파라미터가있는 경우의 파라미터가 동일 반환이 0 인 경우, 음수 번째 창 앞에 위치하는 경우, 비교 함수 (비교), 두 개의 매개 변수를 수신한다.

function compare(value1,value2){
  if (value1 < value2){
    return -1;
  } else if (value1 > value2){
    return 1;
  } else{
    return 0;
  }
}

우리는 인쇄 결과로서 있었다 다음, 정렬 () 메소드 비교 함수 배열 도착의 구성을 건네

var arr=[101,1,3,5,9,4,11];
console.log(arr.sort(compare));
// 输出: [1, 3, 4, 5, 9, 11, 101];

정렬은 아무 문제없이 크고 작은에서 찾을 수 있습니다.

(3) 오브젝트의 배열을 정렬

  종류 () 숫자의 배열을 정렬 비교 함수를 전달하지만, 개발에, 우리는 등 아이디, 나이, 같은 개체의 배열을 정렬하는 특정 속성을 가지고 의한 방법, 그럼 어떻게 그것을 해결하기 위해?

이 문제를 해결하기 위해 우리는 함수를 정의 할 수 있고, 그 속성 이름을 수신하고, 그 다음 비교 함수를 만들고에 반환 값으로서 돌려 (함수 JS뿐만 아니라 같은 파라미터를 전달할 수 있고, 속성 이름에 기초한 값으로 사용될 수있다 다른 함수로 전달 함수 또는 함수는 다른 함수의 결과로서 반환 될 일류 시민 JS의 함수로서 매우 유연 실제로없는 이유없이.)로서 다음과 같다.

function compareFunc(prop){
  return function (obj1,obj2){
    var value1=obj1[prop];
    var value2=obj2[prop];
    if (value1 < value2){
        return -1;
    } else if (value1 > value2){
        return 1;
    } else{
        return 0;
    }
  }
}

정렬 () 메서드를 통과 출력물 compareFunc (소품)를 호출, 배열 사용자 정의 :

var users=[
    {name:'tom',age:18},
    {name:'lucy',age:24},
    {name:'jhon',age:17},
];
console.log(users.sort(compareFunc('age')));
// 输出结果
[{name: "jhon", age: 17},
{name: "tom", age: 18},
{name: "lucy", age: 24}]

비교 함수는 정렬 () 메소드는 자신의 순서를 결정하는 각 객체의 toString () 메소드를 호출 할 때 우리는 더 만들 수 ( '나이') 방법 compareFunc를 호출 할 때 기본적으로 정렬 ()를 호출 방법은 통과하지 않습니다 기능, 정렬 나이 속성 객체에 의해 정렬됩니다.

4, 분류 XML 노드

  배경 많은 양의 데이터가 JSON 형식으로 반환이 있지만 가볍고 해결하기 쉽습니다. 항목은 데이터를 직렬화 할 필요가 얻을 수있는 프런트 종료 후 XML 문자열 때문에 다시 반환되기 전에 그러나, 종류에 약간 필요 정렬 할 객체의 배열로 XML을 변환하는 정렬하기 전에,이 문제가되지 않습니다 하지만, 매우 중복 문제가 작성된 코드의 느낌. 나중에, 변덕에, XML 취득도 직접 정렬 할 수 없습니다 배열로 변환하는 클래스 객체, 클래스 배열 객체의 배열을 얻을.

// 1.模拟后端返回的XML字符串
var str=`
<root>
  <user>
    <name>tom</name>
    <age>18</age>
  </user>
  <user>
    <name>lucy</name>
    <age>24</age>
  </user>
  <user>
    <name>jhon</name>
    <age>17</age>
  </user>
<root>
`   
// 2.定义比较函数
function compareFunction(prop){
  return function (a, b) {
      var value1= a.getElementsByTagName(prop)[0].textContent;
      var value2= b.getElementsByTagName(prop)[0].textContent;
      if (value1 < value2){
        return -1;
      } else if (value1 > value2){
        return 1;
      } else{
        return 0;
    }
  }
}
// 3.xml字符串转换成xml对象
var domParser = new DOMParser();
var xmlDoc = domParser.parseFromString(str, 'text/xml');
var userElements=xmlDoc.getElementsByTagName('user'));
// 4.userElements类数组对象转换成数组再排序
var userElements=Array.prototype.slice.call(xmlDoc.getElementsByTagName('user'));
var _userElements=userElements.sort(compareFunction('age'));
// 5.打印排序后的结果
_userElements.forEach((user)=>{
  console.log(user.innerHTML);
});

정렬 인쇄 후 결과

찾을 수 있습니다, 큰 작은에서 XML 노드는 연령에 따라 정렬되어왔다.

5 요약

  JS 어레이 정렬 방법은, 수신되는 비교 함수는 병음 알파벳 순서 등과 같은 우리가 명심 같이 시간에 따라 많은 유연성을 정렬뿐만 아니라 수 있기 때문에 , 명시 적으로 전달하는 두 개의 개체에게 속성 값 비교 함수를 비교하여 특성을 비교하여 값은 객체의 정렬 순서 결정하기 로한다. 또한, 문제를 해결하기 위해 더 많은 것보다는 다만 간단한 요약을 새로운 아이디어를 발견하는 직장에서 문제가 발생하고 있습니까 불충분 한 경우, 많은, 수정의 많은.


참조 :
"고급 자바 스크립트 튜토리얼"

추천

출처www.cnblogs.com/peerless1029/p/11925580.html