1. 程式人生 > >js sort方法根據陣列中物件的某一個屬性值進行排序

js sort方法根據陣列中物件的某一個屬性值進行排序

sort方法接收一個函式作為引數,這裡巢狀一層函式用來接收物件屬性名,其他部分程式碼與正常使用sort方法相同.

var arr = [
    {name:'zopp',age:0},
    {name:'gpp',age:18},
    {name:'yjj',age:8}
];

function compare(property){
    return function(a,b){
        var value1 = a[property];
        var value2 = b[property];
        return value1 - value2;
    }
}
console.log(arr.sort(compare('age')))

如何根據引數不同,來確定是升序排列,還是降序排序呢?

/**陣列根據陣列物件中的某個屬性值進行排序的方法 
     * 使用例子:newArray.sort(sortBy('number',false)) //表示根據number屬性降序排列;若第二個引數不傳遞,預設表示升序排序
     * @param attr 排序的屬性 如number屬性
     * @param rev true表示升序排列,false降序排序
     * */
    sortBy: function(attr,rev){
        //第二個引數沒有傳遞 預設升序排列
        if(rev ==  undefined){
            rev = 1;
        }else{
            rev = (rev) ? 1 : -1;
        }
        
        return function(a,b){
            a = a[attr];
            b = b[attr];
            if(a < b){
                return rev * -1;
            }
            if(a > b){
                return rev * 1;
            }
            return 0;
        }
    }

相關推薦

js sort方法根據陣列物件一個屬性進行排序(實用方法

js sort方法根據陣列中物件的某一個屬性值進行排序 sort方法接收一個函式作為引數,這裡巢狀一層函式用來接收物件屬性名,其他部分程式碼與正常使用sort方法相同. var arr = [ {name:'zopp',age:0}, {name:'gpp',age:18}, {n

js sort方法根據陣列物件一個屬性進行排序

sort方法接收一個函式作為引數,這裡巢狀一層函式用來接收物件屬性名,其他部分程式碼與正常使用sort方法相同. var arr = [ {name:'zopp',age:0}, {name:'gpp',age:18}, {name:'yjj',age:8} ]; functio

js 根據陣列物件一個屬性進行排序

var arr = [ {name:'zopp',age:0}, {name:'gpp',age:18}, {name:'yjj',age:8} ]; compare = (property) => { return function(a,b){

根據陣列物件一個屬性進行排序

ort方法接收一個函式作為引數,這裡巢狀一層函式用來接收物件屬性名,其他部分程式碼與正常使用sort方法相同 var arr = [ {name:'zopp',likeSum:6}, {name:'gpp',likeSum:6}, {name:'yjj',likeSum:6

根據陣列物件的某個屬性排序

➢ 排序函式 attr 排序的屬性 如number屬性 rev true表示升序排列,false降序排序 sortFun: function(attr,rev){        //第二個引數沒有傳遞 預設升序排列    

javalist裡面存放map,根據map一個欄位進行排序

Java中list裡面存放map,根據map中的某一個欄位進行排序 例如: package com;   import java.util.ArrayList;   import java.util.Collections;   import java.util.Comparator;   impor

Java list裡面存放map,根據map一個欄位進行排序 lambda

//lambda Collections.sort(list, (o1, o2) -> { String name1 = (String) o1.get("id"); String name2 = (String) o2.get("id"); return name2.

fastjson根據json陣列物件的某個欄位進行排序

記錄一下 /** *@Author:vic *@Date:14:59 2018/11/30 *@Description: is_desc-false升序列 is_desc-true降序 */ public static String jsonArraySor

根據map的key或者value進行排序

1.根據key值進行排序import java.util.Comparator; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.TreeMap;

js使用map過濾陣列物件

$(function(){ var users=[ {"name":"nihao","age":20}, {"name":"liming","age":21}, {"name":"zhangsan","age":23}, {"name":"zhaosi",

對jsonarray某個物件一個欄位進行排序

import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;import com.alibaba.fastjson.JSON

陣列中和為一個

#include<iostream> #include<vector> #include <algorithm> using namespace std;

java對HashMap的key或者value進行排序

前段時間從csdn 上看到了一個問題。 有個網友解答的很巧妙。以下是問題原型,我對其中做了一些修改。java 可以按照 HashMap 中的 key 或者 value 來進行排序。import java.util.*; public class MapTest { pu

Mysql JSON欄位提取一個屬性的函式

mysql從5.7開始才支援JSON_EXTRACT等 JSON相關的函式, 專案裡用到的mysql是5.6的,需要提取JSON欄位裡某一個屬性值進行統計, 自己寫了一個笨的提取方法: CREATE DEFINER=`root`@`%` FUNCTION `jsonExtract`(`fieldName

怎麼對list裡面的資料的一個欄位進行排序

集合類List存放的資料,預設是按照放入順序排序的。我們也可以對list中某一個元素進行排序。例如: package test.tool.gui.dbtool.util; import java

如何根據List 物件屬性排序,比如按照學生物件的年齡屬性排序。|Collections.max()|Collections.sort()

本文目錄 1.List相關 List 是有序的,即按照元素的新增順序排列的,如ArrayList、LinkedList。 List是可重複的,即能存入多條完全一樣的資料或物件。 2.如何取List中(基本型別)的最大值

js(2) javascript物件陣列、字串合併的方法

一、js中物件合併的方法1)第一種方法var a = { a : '1', b : '2' } var content = { c: '3', ...a } console.log(content) //content = {c: "3", a: "1", b: "

原聲JSindexOf()方法陣列的應用一

定義和用法 indexOf() 方法可返回某個指定的字串值在字串中首次出現的位置。 提示和註釋 註釋:indexOf() 方法對大小寫敏感! 註釋:如果要檢索的字串值沒有出現,則該方法返回 -1。 註釋:字元位置是從 0 開

關於比較器,我們知道我們java陣列可以使用一個方法:Array.sort(array);來進行排序

關於比較器,我們知道我們java陣列中可以使用一個方法:Array.sort(array);來進行排序,如果我們陣列中是放的基本資料型別,就可以直接比較大小排序,如果我們放的是物件的話,這樣排序就意義不大,需要我們自己進行相應的修改,得到我們想要的比較結果。 比如我們有三個學生,學生屬性有id,

用filter方法篩選陣列的無效物件

要求:獲取陣列中包含a欄位的物件,不包含的去掉。 let arr = [{a:1,b:3},{c:4,d:4},{b:3,a:3}]; let res = arr.filter(function(item,index,arr){ return item.a }); console.