js代码对对象数组进行排序,如果对象中的值为非数字式比如null或者“-“,排在最后

这段代码展示了如何对一个包含站点1PM2.5数据的数组进行排序,处理缺失值并保持降序排列。

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


var mergedArray=[{name:"站点1",PM25 :10},{name:"站点1",PM25 :"-"},{name:"站点1",PM25 :15},{name:"站点1",PM25 :1}]
 mergedArray?.sort((a,b)=>{
    if (a === b) {
            return 0;
        }else if (a.PM25 == null || a.PM25 === "-") {
            return 1;
        }else if (b.PM25 == null || b.PM25 === "-") {
            return -1;
        } else { 
          // 降序
            return a.PM25 < b.PM25 ? 1 : -1;
        }
   })
 }
 
 //输出[{name:"站点1",PM25 :15},{name:"站点1",PM25 :10},{name:"站点1",PM25 :1},{name:"站点1",PM25 :"-"}]
### 微信小程序中数组排序的方法与示例 在微信小程序开发过程中,数据的排序是一个常重要的功能模块。通过合理运用 JavaScript 的 `Array.prototype.sort()` 方法以及自定义比较函数,可以轻松实现各种复杂的排序需求。 #### 使用 sort() 方法进行基本排序 `sort()` 是 JavaScript 中用于对数组元素进行排序的一个内置方法。默认情况下,它会按照字符串 Unicode 编码顺序进行排列。如果需要更复杂的排序逻辑,则需传入一个比较函数作为参数[^1]。 以下是简单的升序和降序排序示例: ```javascript // 升序排序 let numbers = [3, 1, 4, 1, 5]; numbers.sort((a, b) => a - b); console.log(numbers); // 输出: [1, 1, 3, 4, 5] // 降序排序 numbers.sort((a, b) => b - a); console.log(numbers); // 输出: [5, 4, 3, 1, 1] ``` 对于对象数组排序,可以根据特定字段来进行定制化排序[^2]。例如,假设有一个包含多个商品的对象数组,希望依据价格高低对其进行排序: ```javascript let products = [ { name: 'Apple', price: 0.99 }, { name: 'Banana', price: 0.59 }, { name: 'Cherry', price: 1.29 } ]; products.sort((a, b) => a.price - b.price); console.log(products); /* 输出: [ { name: 'Banana', price: 0.59 }, { name: 'Apple', price: 0.99 }, { name: 'Cherry', price: 1.29 } ] */ ``` #### 处理数字类型的排序 当遇到混合类型的数据时(如既有数又有字符串),可能需要额外注意如何处理这些特殊情况[^3]。下面的例子展示了如何忽略数字或者将其放置到队列末端: ```javascript let mixedData = ['apple', 3, 'banana', 1, null, undefined, NaN]; mixedData.sort((a, b) => { if (typeof a !== 'number' || isNaN(a)) return 1; if (typeof b !== 'number' || isNaN(b)) return -1; return a - b; }); console.log(mixedData); /* 可能输出类似于: [1, 3, "apple", "banana", null, undefined, NaN] */ ``` #### 列表拖拽排序的实际应用场景 除了常规的编程方式外,在某些场景下还需要支持用户交互式的排序行为,比如允许他们手动调整项目的位置。这通常涉及到手势识别技术,并配合前端框架完成更加直观的操作体验[^4]。 一种常见做法是借助 `<movable-view>` 和其他相关组件构建可移动视图区域,从而让用户能够自由改变项目的先后次序而无需依赖传统的点击按钮触发事件机制。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值