js数组排序

文章描述:

JavaScript对数组字母、数字、中文进行排序

 

数字

var points = [50, 100, 1, 5, 2, 20,10];
points.sort(function(a, b){
  return a - b //正数为升序
}); 
console.log(points)

[1, 2, 5, 10, 20, 50, 100]

降序

var points = [50, 100, 1, 5, 2, 20,10];
points.sort(function(a, b){
  return b - a //降序
}); 
console.log(points)

[100, 50, 20, 10, 5, 2, 1]

 

字母

var fruits = ["Banana", "Orange", "Apple", "Mango", "Strawberry"];
let arr = fruits.sort();  // 对 fruits 中的元素进行排序
console.log(arr);

[‘Apple’, ‘Banana’, ‘Mango’, ‘Orange’, ‘Strawberry’]

 

反转数组

reverse() 方法反转数组中的元素

let arr2 = fruits.reverse();
console.log(arr2);

[‘Strawberry’, ‘Orange’, ‘Mango’, ‘Banana’, ‘Apple’]

 

中文

var arr = [
    {name: '南京', code: '09', info: {province: '江苏'}},
    {name: '北京', code: '01', info: {province: '北京'}},
    {name: '南充', code: '04', info: {province: '四川'}},
    {name: '上海', code: '02', info: {province: '上海'}},
    {name: '深圳', code: '05', info: {province: '广东'}}
  ];
  function sortChinese (arr, dataLeven) { // 参数:arr 排序的数组; dataLeven 数组内的需要比较的元素属性
    /* 获取数组元素内需要比较的值 */
    function getValue (option) { // 参数: option 数组元素
      if (!dataLeven) return option
      var data = option
      dataLeven.split('.').filter(function (item) {
        data = data[item]
      })
      return data + ''
    }
    arr.sort(function (item1, item2) {
      return getValue(item1).localeCompare(getValue(item2), 'zh-CN');
    })
  }
  sortChinese(arr, 'name') // 例如:比较的是name,传入的就是 'name'
  console.log(arr);

 

 

sortChinese(arr, 'info.province') // 例如:比较的是数组元素属性info内的province属性,传入的就是 'info.province'
console.log(arr);

 

发布时间:2023/08/28

发表评论