Home  >  Article  >  Web Front-end  >  Implementing Json data sorting based on a certain field based on JavaScript_javascript skills

Implementing Json data sorting based on a certain field based on JavaScript_javascript skills

WBOY
WBOYOriginal
2016-05-16 15:30:282062browse

1. First, let me introduce to you the sort() method built into js

This method sorts the elements in the array in alphabetical order by default. To be more precise, it sorts in the order of character encoding.

Look at the following example:

When the elements in the array are of numeric type, the sorting result is completely different from what we expected, because the default is to sort according to the order of character encoding.

Solution: The sort() method receives an optional parameter (this parameter must be a function). We can define the sorting rules ourselves, as shown below

2. Specific implementation of json sorting

/*
     * @description    根据某个字段实现对json数组的排序
     * @param   array  要排序的json数组对象
     * @param   field  排序字段(此参数必须为字符串)
     * @param   reverse 是否倒序(默认为false)
     * @return  array  返回排序后的json数组
    */
    function jsonSort(array, field, reverse) {
      //数组长度小于2 或 没有指定排序字段 或 不是json格式数据
      if(array.length < 2 || !field || typeof array[0] !== "object") return array;
      //数字类型排序
      if(typeof array[0][field] === "number") {
        array.sort(function(x, y) { return x[field] - y[field]});
      }
      //字符串类型排序
      if(typeof array[0][field] === "string") {
        array.sort(function(x, y) { return x[field].localeCompare(y[field])});
      }
      //倒序
      if(reverse) {
        array.reverse();
      }
      return array;
    }

PS: In JS: json object array is sorted by object properties

var array = [
  {name: 'a', phone: 1},
  {name: 'b', phone: 5},
  {name: 'd', phone: 3},
  {name: 'c', phone: 4}
]
array.sort(getSortFun('desc', 'phone'));
function getSortFun(order, sortBy) {
  var ordAlpah = (order == 'asc') &#63; '>' : '<';
  var sortFun = new Function('a', 'b', 'return a.' + sortBy + ordAlpah + 'b.' + sortBy + '&#63;1:-1');
  return sortFun;
}
alert(JSON.stringify(array));

The array itself has a sort method, which can specify a sorting function, so a sorting function can be dynamically generated to complete the requirement of sorting by specified object attributes;

Note: The original array sequence will change after sort! !

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn