js 对象数组 调用方法 判断某个属性值,这个值小于上一个值就删除此行数据否则删除上一行数据;但是不改变传入的原始数据
时间: 2024-04-10 11:28:12 浏览: 113
你可以编写一个函数来实现该逻辑。在函数内部,你可以通过遍历对象数组并比较当前行的属性值与上一行的属性值,然后根据条件删除行数据。以下是一个示例:
```javascript
function removeRows(arr, property) {
const newData = [];
let prevValue = null;
for (let i = 0; i < arr.length; i++) {
if (prevValue === null || arr[i][property] >= prevValue) {
newData.push({...arr[i]});
prevValue = arr[i][property];
}
}
return newData;
}
const arr = [
{ name: 'John', score: 50 },
{ name: 'Jane', score: 60 },
{ name: 'Bob', score: 40 },
{ name: 'Alice', score: 70 }
];
const filteredArr = removeRows(arr, 'score');
console.log(filteredArr);
```
在上述示例中,`removeRows` 函数接受对象数组 `arr` 和属性 `property` 作为参数。在函数内部,创建一个新的空数组 `newData` 来存储符合条件的行数据。使用一个变量 `prevValue` 来保存上一行的属性值。
然后,使用 `for` 循环遍历对象数组 `arr`。在每次迭代中,首先检查 `prevValue` 是否为 `null`,如果是,则将当前行添加到新数组 `newData` 中,并将当前行的属性值赋给 `prevValue`。
如果 `prevValue` 不为 `null`,则比较当前行的属性值与 `prevValue`,如果当前行的属性值大于等于 `prevValue`,则将当前行添加到新数组 `newData` 中,并更新 `prevValue` 为当前行的属性值。
最后,返回新的数组 `newData`,它包含符合条件的行数据。原始数据数组 `arr` 保持不变。通过调用 `removeRows` 函数并将结果赋给 `filteredArr` 变量,你可以查看筛选后的对象数组。
阅读全文