1. 程式人生 > >js json陣列按某一欄位排序

js json陣列按某一欄位排序

一.首先給大家介紹js中內建的 sort() 方法

此方法預設是按字母順序對陣列中的元素進行排序的,說得更精確點,是按照字元編碼的順序進行排序。

看如下例子:

當陣列中元素為 數字型別 時,排序結果與我們設想的完全不同,因為預設是按照字元編碼的順序進行排序的。

解決方案:sort() 方法接收一個可選引數(此引數必須是函式),我們可以自己定義排序規則,如下圖

二.  對 json 排序的具體實現

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 /* * @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:JS中:json物件陣列按物件屬性排序

?
1 2 3 4 5 6 7 8 9 10 11 12 13 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') ?

相關推薦

js json陣列排序

一.首先給大家介紹js中內建的 sort() 方法 此方法預設是按字母順序對陣列中的元素進行排序的,說得更精確點,是按照字元編碼的順序進行排序。 看如下例子: 當陣列中元素為 數字型別 時,排序結果與我們設想的完全不同,因為預設是按照字元編碼的順序進行排序的。

js裡的sort()對json資料()進行排序,超實用!!!

首先來看一下接口裡的資料,對哪一資料進行操作 { "hourList": [{ "DATA_DATE": "00", "USE_SUM": 9.58 }, { "DATA_DATE": "03", "USE_SUM": 23.18 }, { "DATA_DATE": "

【mysql技巧】分組取最大(小)值所在行的資料

mysql技巧--按某一欄位分組取最大(小)值所在行的資料,這是mysql資料庫程式設計師經常用到的在處理一些報表資料時候可以活用!那麼獵微網將總結幾種mysql查詢最大值 mysql查詢最小值的方法! mysql表圖如下 具體Php 連線mysql資料庫ph

mysql分組取最大(小)值所在行的資料

表結構指令碼: CREATE TABLE `student_grade` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(64) DEFAULT NULL, `grade` in

php對二維陣列進行排序

<?php   $array = array(  array('name'=>'手機','brand'=>'諾基亞','price'=>1050),  array('name'=>'膝上型電腦','brand'=>'lenovo','pr

對二維陣列求和

方法一: array_sum(array_map(create_function('$val', 'return $val["size"];'), $arr)); 方法二: array_sum(array_map(function($val){return $val['s

PHP關聯陣列value值排序

1.定義 二維陣列根據某個欄位排序有兩種辦法,一種是通過sort自己寫程式碼,一種是直接用array_multisort排序函式,這裡直接說使用array_multisortd的方式。 2.eg: // a. 構造測試資料 $roledata = array( array("name"=&g

獲取json語句中的可以能為空,如何防止程式異常終止

有時候我們獲取json語句中的某一欄位,欄位可以能為空。可以採用以下兩種方法來編寫程式碼避免程式因找不到目標物件而終止。 # try: # label = all_json2['APP']['label'] # 標籤 # except: # label = '' label

!!!按照排序

//Ar 參照欄位的陣列、brr[第二個陣列]、、、、、、、、 //注:各個欄位皆換成陣列再來進行陣列繫結 可用於按照某個陣列進行排序等     var max;     var maxmiddle;    &n

查詢:對去重,並獲得其他資訊

想在table1表中,查公司中的員工名字有哪些,table1表中員工有重名的情況,所以要對員工名去重,並且要得到員工名字、及其對應的部門號dept_id 即:對name欄位去重,並獲得name, dept_id 欄位 在thinkphp3.2 中 $table1= M('table1

js 刪除陣列項的幾種方法總結

第一種:改變原陣列 借用原生陣列方法:splice(index,len,[item])  剪接 借用原生物件方法:delete array[index] + array.slice(0, index).concat(array.slice(index, array.length-1))

sql取逗號前後資料與批量修改

sql取逗號後的值 SELECT SUBSTRING_INDEX(欄位,",",-1) FROM 表名 sql取逗號前的值 SELECT SUBSTRING_INDEX(欄位,",",1) FROM 表名 批量修改 UPDATE 表名 SET 欄位=REPLACE(欄位,'

將一個集合類的遍歷到另一個集合中

        我們在開發中經常會遇到這種情況,就是在查詢一個列表的時候,可能會需要將另一個表中的某些欄位拼接到這一個列表中,在這種時候,如果是取到列表之後,然後根據某一個欄位再去一個一個的查詢的話,就會很費資源,介面也會變的很慢。   &nbs

Oracle資料庫,當前時間轉為星期的語句和查詢轉為星期顯示的種方法。

1、當前時間的星期 select to_char(sysdate,'day') from  dual  ;   2、指定欄位的星期 select decode (substr(to_char(t.欄位,'d','NLS_DATE_LANGUAGE

過程或函式“”需要引數,單位提供

錯誤型別 導致錯誤的程式碼如下: 出錯原因: 因為在編寫三層中的DAL中,新增時沒有加上賦值的過程: arr[0].Value = model.LoginName; arr[1].Value = mod

java8中List根據去重

前言 在做一個記錄操作日誌功能,根據型別及稽核使用者名稱稱去查詢操作日誌。稽核使用者名稱稱,在這裡將資料全部查詢出來了,可是我只想要每個人的姓名,而不是出現重複人名,比如:楊平,出現了好多。如何解決此問

java使用MongoDB更新實體類的值

MongoDB中更新用updateAsset(entity),但是當只更新一個欄位的時候,這樣就會很慢,我們使用updateMulti()方法 程式碼: Query query = new Qu

mysql根據去除重複資料

SQL如下: DELETE  FROM     aa  WHERE     shopid NOT IN ( SELECT     temp.min_id  FROM  

mysql查詢,並將結果拼接為一個字串

select GROUP_CONCAT(uid) from users使用GROUP_CONCAT()函式,預設以‘,’將拼接的字串隔開,得到類似以下形式的字串:“1,2,3,4,5,6,”使用DIST

mysql把表中拆分為多列

一:sql資料庫截圖 二:sql語句      SELECT id, house_no as '總稱',SUBSTR(house_no, 1, 4) AS '小區名稱',SUBSTR(house_n