gpt4 book ai didi

javascript - 在 Javascript 中过滤后将事件标志替换为下一项

转载 作者:行者123 更新时间:2023-12-01 00:07:35 24 4
gpt4 key购买 nike

我有一个来自 api 的响应,需要过滤。过滤后我需要设置事件项目。过滤后,可能会出现没有事件项被设置为 true 的情况,因为初始事件项已被过滤。我想启用下一个可能的事件元素。

// This object array is always sorted with the same length. 
const data = [
{ id: 241, name: "item 1",count: 0, active: false},
{ id: 221, name: "item 2",count: 4, active: true},
{ id: 343, name: "item 3",count: 0, active: false},
{ id: 129, name: "item 3",count: 0, active: false}
]

const dataActive = data.find( el=> el.active === true);
const filtered = data.filter(el => el.count < 3);

如何将过滤后的对象数组中第 3 项的事件标志更改为 true?

因此过滤后的输出为:

  { id: 241, name: "item 1",count: 0, active: false},
{ id: 343, name: "item 3",count: 0, active: true},
{ id: 129, name: "item 3",count: 0, active: false}

最佳答案

如果改变源数据不会打扰您,您可以在 filter() 中执行必要的副作用:

const data = [ 
{ id: 241, name: "item 1",count: 0, active: false},
{ id: 221, name: "item 2",count: 4, active: true},
{ id: 343, name: "item 3",count: 0, active: false},
{ id: 129, name: "item 3",count: 0, active: false}
],

filtered = data.filter(item =>
item.count < 3 ?
(shiftFlag ? (item.active = true, shiftFlag = false, true) : true) :
(item.active ? (shiftFlag = true, item.active = false, false) : false),
shiftFlag=false)

console.log(filtered)
.as-console-wrapper{min-height:100%;}

当然,如果事件项目将位于数组中的最后一个并且它必须已被过滤掉,则上面不会将事件标志转移到下一个项目。

关于javascript - 在 Javascript 中过滤后将事件标志替换为下一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60270480/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com