JS配列のソート

不言
不言オリジナル
2018-04-03 18:01:482714ブラウズ


JavaScript の配列の sort() メソッドは、主に配列の要素を並べ替えるために使用されます。このうち、sort() メソッドにはオプションのパラメーターがあります。ただし、このパラメータは関数である必要があります。 配列の sort() メソッドを呼び出すとき、パラメータが渡されない場合、配列内の要素はアルファベット順 (文字エンコーディング順) に並べ替えられます 他の基準に従って並べ替えたい場合は、パラメータを渡す必要があります。この関数は 2 つの値を比較し、2 つの値の相対的な順序を表す数値を返します。

1. 数値配列を小さい順に並べ替えます。

var arr = [22,12,3,43,56,47,4];
arr.sort();
console.log(arr); // [12, 22, 3, 4, 43, 47, 56],按照数字的第一个字排序的arr.sort(function (m, n) {
 if (m < n) return -1  //m < n 返回-1是从小到大排序,返回1是从大到小排序
 else if (m > n) return 1
 else return 0});
console.log(arr); // [3, 4, 12, 22, 43, 47, 56],按照数值大小排序

2. 文字列配列に対して大文字と小文字を区別せずにアルファベット順に並べ替えます

var arr = [&#39;abc&#39;, &#39;Def&#39;, &#39;BoC&#39;, &#39;FED&#39;];
console.log(arr.sort()); // ["BoC", "Def", "FED", "abc"],按首个字母在ASIIC中出现的位置排序console.log(arr.sort(function(s, t){
 var a = s.toLowerCase(); var b = t.toLowerCase(); if (a < b) return -1;//从小到大排序
 if (a > b) return 1; return 0;
})); // ["abc", "BoC", "Def", "FED"]

3. オブジェクトを含む配列をオブジェクト内の年齢に従って降順に並べ替えます

var arr = [{&#39;name&#39;: &#39;张三&#39;, age: 26},{&#39;name&#39;: &#39;李四&#39;, age: 12},{&#39;name&#39;: &#39;王五&#39;, age: 37},{&#39;name&#39;: &#39;赵六&#39;, age: 4}];var objectArraySort = function (keyName) {
 return function (objectN, objectM) {
  var valueN = objectN[keyName]  var valueM = objectM[keyName]  if (valueN < valueM) return 1 //从大到小排序
  else if (valueN > valueM) return -1
  else return 0
 }
}
arr.sort(objectArraySort(&#39;age&#39;))
console.log(arr) // [{&#39;name&#39;: &#39;王五&#39;, age: 37},{&#39;name&#39;: &#39;张三&#39;, age: 26},{&#39;name&#39;: &#39;李四&#39;, age: 12},{&#39;name&#39;: &#39;赵六&#39;, age: 4}]

主に配列のsort()メソッドが使用されます。配列の要素を並べ替えます。このうち、sort() メソッドにはオプションのパラメーターがあります。ただし、このパラメータは関数である必要があります。 配列の sort() メソッドを呼び出すとき、

パラメータが渡されない場合、配列内の要素はアルファベット順 (文字エンコーディング順) に並べ替えられます

他の基準に従って並べ替えたい場合は、パラメータを渡す必要があります。この関数は 2 つの値を比較し、2 つの値の相対的な順序を表す数値を返します。 1. 数値配列を小さい順に並べ替えます。

var arr = [22,12,3,43,56,47,4];
arr.sort();
console.log(arr); // [12, 22, 3, 4, 43, 47, 56],按照数字的第一个字排序的arr.sort(function (m, n) {
 if (m < n) return -1  //m < n 返回-1是从小到大排序,返回1是从大到小排序
 else if (m > n) return 1
 else return 0});
console.log(arr); // [3, 4, 12, 22, 43, 47, 56],按照数值大小排序

2. 文字列配列に対して大文字と小文字を区別しないアルファベット順の並べ替えを実行します

var arr = [&#39;abc&#39;, &#39;Def&#39;, &#39;BoC&#39;, &#39;FED&#39;];
console.log(arr.sort()); // ["BoC", "Def", "FED", "abc"],按首个字母在ASIIC中出现的位置排序console.log(arr.sort(function(s, t){
 var a = s.toLowerCase(); var b = t.toLowerCase(); if (a < b) return -1;//从小到大排序
 if (a > b) return 1; return 0;
})); // ["abc", "BoC", "Def", "FED"]

3. オブジェクトを含む配列をオブジェクト内の年齢に従って降順に並べ替えます

var arr = [{&#39;name&#39;: &#39;张三&#39;, age: 26},{&#39;name&#39;: &#39;李四&#39;, age: 12},{&#39;name&#39;: &#39;王五&#39;, age: 37},{&#39;name&#39;: &#39;赵六&#39;, age: 4}];var objectArraySort = function (keyName) {
 return function (objectN, objectM) {
  var valueN = objectN[keyName]  var valueM = objectM[keyName]  if (valueN < valueM) return 1 //从大到小排序
  else if (valueN > valueM) return -1
  else return 0
 }
}
arr.sort(objectArraySort(&#39;age&#39;))
console.log(arr) // [{&#39;name&#39;: &#39;王五&#39;, age: 37},{&#39;name&#39;: &#39;张三&#39;, age: 26},{&#39;name&#39;: &#39;李四&#39;, age: 12},{&#39;name&#39;: &#39;赵六&#39;, age: 4}]

関連する推奨事項:

js 配列の操作方法重複を削除するには

JS配列の知識のまとめと共有

以上がJS配列のソートの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。