有什么简单点方法可以快速获取
let key = 'test3' // 已知的key
已知的数组
let list=[
{label:'测试1',value:'test1'},
{label:'测试2',value:'test2'},
{label:'测试3',value:'test3'}, // 根据key 和value对比
{label:'测试4',value:'test4'},
{label:'测试5',value:'test5'}
]
根据key 去list数组中对比 如果找到就在当前对象内添加一个status,赋值为进行中,当前这个对象前面的对象全部设置为已完成,后面的全部设置为未开始
想得到的数组
let newList=[
{label:'测试1',value:'test1',status:'已完成'},
{label:'测试2',value:'test2',status:'已完成'},
{label:'测试3',value:'test3',status:'进行中'},
{label:'测试4',value:'test4',status:'未开始'},
{label:'测试5',value:'test5',status:'未开始'}
]
你这个test1和test2的已完成判断条件是什么?
没说 规则 咋 写
在原数组上修改
list.reduce((status, item) => {
if(item.value === key){
status = false
item.status = '进行中'
}else{
item.status = status ? '已完成' : '未开始'
}
return status
}, true)
生成一个新数组
let status = true
let newList = list.map(item => {
return {
...item,
status: item.value === key ? (status = false, '进行中') : status ? '已完成' : '未开始'
}
})
function setStatus(list = [], starting) {
let startingIndex
return list.map((item, index) => {
if (item.value === starting) {
startingIndex = index
return {
...item,
status: '进行中',
}
}
return {
...item,
status: startingIndex === undefined ? '已完成' : '未开始',
}
})
}