根据key改变数组结构

有什么简单点方法可以快速获取

                       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 ? '已完成' : '未开始',
    }
  })
}