sort()函数之json对象数组排序

本文介绍如何使用JavaScript对JSON对象数组中的元素进行升序和降序排序。通过定义比较函数并利用Array.prototype.sort()方法,实现对menuSort字段的有效排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

var str='[{"id":31,"name":"值1","menuSort":94,"enabled":1,"parentId":23},{"id":32,"name":"值2","menuSort":93,"enabled":1,"parentId":23}]';

var json=JSON.parse(str);

 

对于对象数组中个别字段进行排序,对上面的menuSort字段进行JSONObject对象数组进行排序。

js如下:

json.sort(compare("menuSort"));

 

升序:

function compare(propertyName) {
    return function(object1, object2) {
        var value1 = object1[propertyName];
        var value2 = object2[propertyName];
        if (value2 > value1) {
            return -1;
        } else if (value2 < value1) {
            return 1;
        } else {
            return 0;
        }
    }
}  

 

降序:

function compare(propertyName) {
    return function(object1, object2) {
        var value1 = object1[propertyName];
        var value2 = object2[propertyName];
        if (value2 < value1) {
            return -1;
        } else if (value2 > value1) {
            return 1;
        } else {
            return 0;
        }
    }
}

 

转载于:https://www.cnblogs.com/BigPig-Winnie/p/9303997.html

### ES6 数组排序方法及其示例 在 JavaScript 中,`Array.prototype.sort()` 是用于对数组元素进行排序的主要方法。此方法可以接受一个比较函数作为参数来定义排序逻辑[^2]。以下是基于 ES6 的 JSON 数组排序的具体实现方式。 #### 使用 `sort()` 对 JSON 数组按属性排序 假设有一个 JSON 数组如下: ```javascript const jsonArray = [ { name: 'Alice', age: 25 }, { name: 'Bob', age: 30 }, { name: 'Charlie', age: 20 } ]; ``` ##### 按年龄升序排列 可以通过传递一个比较函数给 `sort()` 来实现按特定字段(如 `age`)排序: ```javascript jsonArray.sort((a, b) => a.age - b.age); console.log(jsonArray); // 输出: // [ // { name: 'Charlie', age: 20 }, // { name: 'Alice', age: 25 }, // { name: 'Bob', age: 30 } // ] ``` 上述代码通过减法运算符计算两个对象的 `age` 属性差值,从而决定它们的顺序。 ##### 按姓名字母降序排列 对于字符串类型的字段(如 `name`),可以使用 `localeCompare` 方法来进行大小写敏感或不敏感的排序: ```javascript jsonArray.sort((a, b) => b.name.localeCompare(a.name)); console.log(jsonArray); // 输出: // [ // { name: 'Charlie', age: 20 }, // { name: 'Bob', age: 30 }, // { name: 'Alice', age: 25 } // ] ``` 这里利用了 `localeCompare` 提供的语言环境支持功能。 #### 结合其他 ES6 特性优化排序过程 除了基本的 `sort()` 外,还可以与其他 ES6 新增特性一起工作以增强灵活性。例如,当需要筛选后再排序时,可以用链式调用的方式完成操作: ```javascript const filteredAndSorted = jsonArray .filter(item => item.age >= 25) // 过滤条件:仅保留年龄大于等于25岁的项 .sort((a, b) => a.age - b.age); // 按照年龄升序排序 console.log(filteredAndSorted); // 输出: // [ // { name: 'Alice', age: 25 }, // { name: 'Bob', age: 30 } // ] ``` 这种组合不仅提高了代码可读性和维护性,还充分利用了现代 JavaScript 的优势[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值