Melaksanakan pengisihan data Json berdasarkan medan tertentu berdasarkan kemahiran JavaScript_javascript

WBOY
Lepaskan: 2016-05-16 15:30:28
asal
2065 orang telah melayarinya

1. Mula-mula, izinkan saya memperkenalkan kepada anda kaedah sort() terbina dalam js

Kaedah ini mengisih unsur-unsur dalam tatasusunan dalam susunan abjad secara lalai.

Lihat contoh berikut:

Apabila elemen dalam tatasusunan adalah daripada jenis angka, hasil pengisihan adalah berbeza sama sekali daripada yang kami jangkakan, kerana lalainya ialah mengisih mengikut susunan pengekodan aksara.

Penyelesaian: Kaedah sort() menerima parameter pilihan (parameter ini mestilah fungsi).

2. Pelaksanaan khusus pengisihan json

/*
     * @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;
    }
Salin selepas log masuk

PS: Dalam JS: tatasusunan objek json diisih mengikut sifat objek

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));
Salin selepas log masuk
Tatasusunan itu sendiri mempunyai kaedah isihan, yang boleh menentukan fungsi pengisihan, jadi fungsi pengisihan boleh dijana secara dinamik untuk melengkapkan keperluan pengisihan mengikut atribut objek yang ditentukan;

Nota: Jujukan tatasusunan asal akan berubah selepas isihan! !

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan