首页 > 其他分享 >写一个方法对数组对象的某几个key进行排序

写一个方法对数组对象的某几个key进行排序

时间:2025-01-04 10:22:01浏览次数:1  
标签:city key people age 数组 排序 name

在前端开发中,JavaScript 是一种常用的语言,我们可以使用其数组的 sort() 方法来对数组对象的特定 key 进行排序。以下是一个简单的示例,假设我们有一个对象数组,并且我们想要根据对象的 age key 对其进行排序:

function sortByKey(array, key) {
    return array.sort((a, b) => (a[key] > b[key]) ? 1 : (b[key] > a[key]) ? -1 : 0);
}

// 示例数组
let people = [
    { name: 'Alice', age: 25 },
    { name: 'Bob', age: 20 },
    { name: 'Charlie', age: 30 }
];

// 使用 sortByKey 函数对 people 数组按 age 排序
people = sortByKey(people, 'age');

console.log(people);
// 输出: [ { name: 'Bob', age: 20 }, { name: 'Alice', age: 25 }, { name: 'Charlie', age: 30 } ]

在这个例子中,sortByKey 函数接受一个数组和一个 key 作为参数。它使用 sort() 方法对数组进行排序,该方法接受一个比较函数作为参数。比较函数根据 key 的值来比较数组中的两个元素,并返回一个表示它们顺序的数字。

如果你想要对多个 key 进行排序,你可以稍微修改这个函数,使其接受一个 key 数组,并依次根据这些 key 进行排序。以下是一个示例:

function sortByKeys(array, keys) {
    return array.sort((a, b) => {
        for (let key of keys) {
            if (a[key] !== b[key]) {
                return a[key] > b[key] ? 1 : -1;
            }
        }
        return 0;
    });
}

// 示例数组
let people = [
    { name: 'Alice', age: 25, city: 'B' },
    { name: 'Bob', age: 25, city: 'A' },
    { name: 'Charlie', age: 30, city: 'C' },
    { name: 'David', age: 20, city: 'D' }
];

// 使用 sortByKeys 函数对 people 数组先按 age,然后按 city 排序
people = sortByKeys(people, ['age', 'city']);

console.log(people);
// 输出: [ { name: 'David', age: 20, city: 'D' }, { name: 'Bob', age: 25, city: 'A' }, { name: 'Alice', age: 25, city: 'B' }, { name: 'Charlie', age: 30, city: 'C' } ]

在这个例子中,sortByKeys 函数接受一个数组和一个 keys 数组作为参数。它使用 sort() 方法对数组进行排序,并根据 keys 数组中的 key 依次比较数组中的两个元素。

标签:city,key,people,age,数组,排序,name
From: https://www.cnblogs.com/ai888/p/18651587

相关文章

  • 使用 SecureCRT6.5连接新安装的ubuntu24.04时提示No compatible hostkey
    使用SecureCRT6.5连接新安装的ubuntu24.04时提示NocompatiblehostkeyKeyexchangefailed.Nocompatiblekeyexchangemethod.Theserversupportsthesemethods:sntrup761x25519-sha512@openssh.com,curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp25......
  • 使用js写一个方法判断数组是否为等差数组
    等差数组是指数组中任意两个相邻元素的差值都相等的数组。下面是一个使用JavaScript编写的函数,该函数可以判断一个数组是否为等差数组:functionisArithmeticArray(arr){if(arr.length<2){//如果数组长度小于2,那么它不能被视为等差数组returnfalse;......
  • C++中的字符( char )、字符数组( char[] )、字符串( std::string )
    字符(char)定义:char是C++中的基本数据类型,用于表示单个字符。char在内存中通常占用一个字节(8位)。在ASCII编码系统中,每个字符都对应一个唯一的整数值,char类型可以存储这些值来表示相应的字符。charch='A';//存储字符'A'与其他类型的联系:字符本质上是一个小整数类......
  • 数组的使用
    声明变量的方式 intnum;//声明 num=10;//初始化 inta=100;//声明+初始化1.声明方式 int[]arr1;//数组的声明 intarr2[];//不推荐2.初始化(1)静态初始化数组的初始化和数组元素的赋值操作同时进行//1.1静态初始化:数组的初始化和数组元......
  • #C02L02P01. C02.L02.一维数组最值问题.知识点1.求最大值
    从键盘读入n(1<=n<=100)个正整数,输出最大值。算法分析假设一个最大值maxx=0;maxx依次跟数组中的元素进行比较;如果该数组元素大于maxx,则将该数组元素值赋值给maxx;maxx即为该数组中的最大值。参考代码#include<bits/stdc++.h>usingnamespacestd;intn,x[101......
  • 树状数组的扩展
    二维区间修改+查询例题题目是求\(\sum\limits_{i=1}^n\sum\limits_{j=1}^ma_{i,j}\)我们可以定义一个差分数组\(d_{i,j}=a_{i,j}+a_{i-1,j-1}-a_{i-1,j}-a_{i,j-1}\)易知\(a_{i,j}=\sum\limits_{x=1}^{i}\sum\limits_{y=1}^jd_{x,y}\)接着我们可以利用差分来简化题意,我......
  • 力扣209. 长度最小的子数组
    给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl,numsl+1,...,numsr-1,numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。示例1:输入:target=7,nums=[2,3,1,2,4,3......
  • js数组实例方法:forEach,includes,indexOf
    Array.prototype.forEach()forEach()方法对数组的每个元素执行一次给定的函数语法forEach(callbackFn)forEach(callbackFn,thisArg)参数callbackFnelement:数组中正在处理的当前元素index:数组中正在处理的当前元素的索引array:调用了forEach()的数组本身thisA......
  • C++中的数组与指针
    在大多数C++书籍或教程中,数组和指针的知识总是放在一起让大家学习,这是为什么,它们之间有什么联系呢?在C++中,数组与指针有着紧密的联系,主要体现在下面几个方面:1、数组名即指针:本质联系:在大多数情况下,数组名会被隐式转换为指向数组第一个元素的指针。例如,对于一个数组intarr[5];......
  • 【C#】int与byte[]数组互转
    1.int转byte[]1.1C#代码//C#代码intintNum=728;byte[]byteNum=BitConverter.GetBytes(intNum);//byteNum[0]=216//byteNum[1]=2//byteNum[2]=0//byteNum[3]=01.2等效C语言代码//C语言代码intintNum=728;uint8_tbyteNum[4]={0};memcpy(byte......