Gre*_*reg 3 javascript arrays filter ecmascript-6
我正在尝试重写 ES6 中的函数以对对象数组进行过滤。目前,代码循环遍历数组并将满足条件的数组成员复制到新数组,然后返回该新数组。该标准基于数组中的先前值。我想过滤掉对象的时间戳字段 < 4 分钟的所有数组项。
let final = [];
final.push(data[0]);
for (let i = 1, j = data.length; i < j; i++) {
// if time difference is > 4 minutes add to our final array
if (data[i].timestamp - data[i-1].timestamp > 240) {
final.push(data[i]);
}
}
return final;
Run Code Online (Sandbox Code Playgroud)
必须有更好的方法来做到这一点。我想过使用箭头函数,但我不知道迭代时如何访问前一个数组项对象的时间戳。
该Array.filter()方法将索引 ( i) 传递给回调函数,您可以使用它从数组中获取上一个值。为了同样获取第一项,我使用了条件,当为 0 时!i,该条件被求值。truei
const data = [{ timestamp: 1 }, { timestamp: 3 }, { timestamp: 250 }, { timestamp: 1000 }];
const final = data.filter((o, i) =>
!i || (o.timestamp - data[i-1].timestamp > 240)
);
console.log(final);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6097 次 |
| 最近记录: |