过滤一个值并在JavaScript中创建新数组
2018-10-11
63
我想从第一个数组中过滤一个值,并使用过滤后的值创建第二个数组。
到目前为止我已经这样做了,但似乎效率不高。
const blacklist = bookingsList.filter(booking => booking.id === id);
const newBookingList = bookingsList.filter(booking => booking.id !== id);
有没有更好的方法来做到这一点?
3个回答
我认为这样的方法对于大型数组很有用,或者如果测试条件很昂贵,因为你只需要循环遍历数组一次
const array1 = [];
const array2 = [];
for (var i = 0; i < input.length; i++) {
const value = input[i];
( testCondition(value) ? array1 : array2 ).push(value);
}
Totò
2018-10-11
您可以使用 forLoop 进行一次迭代来完成此操作,例如
const blacklist = [];
const newBookingList = [];
bookingsList.forEach(booking => {
if(booking.id === id) {
blacklist.push(booking)
}
else {
newBookingList.push(booking)
}
}
Shubham Khatri
2018-10-11
您可以使用
forEach()
和三元运算符:
const bookingsList = [{id:'black'},{id:'new'}];
const blacklist = [], newBookingList = [], id='black';
bookingsList.forEach(booking => booking.id === id? blacklist.push(booking.id) : newBookingList.push(booking.id));
console.log(blacklist);
console.log(newBookingList);
Mamun
2018-10-11