无法在地图内部添加检查以筛选出详细信息



仅当匹配项数据中存在的currentTab的助记符时才更新值,而不更改原始项

let items = [{tab:'tab1',info:[{mnemonic:'first',value:'alm'},{mnemonic:'second',value:'jim'}]},
{tab: 'tab2',info:[{mnemonic:'first',value:'kim'},{mnemonic:'second',value:'tim'}]},
{tab:'tab3',info:[{mnemonic:'first',value:'wint'},{mnemonic:'second',value:'telt'}]}]
let expectedOutput = [{tab:'tab1',info:[{mnemonic:'newValue',value:'alm'},{mnemonic:'second',value:'jim'}]},
{tab: 'tab2',info:[{mnemonic:'first',value:'kim'},{mnemonic:'second',value:'tim'}]},
{tab:'tab3',info:[{mnemonic:'first',value:'wint'},{mnemonic:'second',value:'telt'}]}]

let currentTab = 'tab1';
let obj = {mnemonic:'first',value:'newValue'}
const getChecked = ()=> {
const newArr = items
.map(
({ info, ...rest }) => ({ 
...rest, info: info
})
)

return newArr;
}
const arr = getChecked();
console.log('newArr',arr)

通过使用Array.map,我们可以实现这一点。

let items = [{tab:'tab1',info:[{mnemonic:'first',value:'alm'},{mnemonic:'second',value:'jim'}]},{tab:'tab2',info:[{mnemonic:'first',value:'kim'},{mnemonic:'second',value:'tim'}]},{tab:'tab3',info:[{mnemonic:'first',value:'wint'},{mnemonic:'second',value:'telt'}]}];
let currentTab = 'tab1';
let obj = { mnemonic: 'first', value: 'newValue' };
const updateItems = (items, currentTab, obj) =>{
return items.map(item => {
//check if the provided tab is matching with the item.tab
if(item.tab === currentTab) {
return {
...item,
info: item.info.map(i => ({
...i,
//update the `mnemonic` if provided object's mnemonic is matching with the item's mnemonic
...(i.mnemonic === obj.mnemonic && { mnemonic: obj.value })
}))
}
} else return {...item}
})
} 
console.log(updateItems(items, currentTab, obj))
.as-console-wrapper {
max-height: 100% !important;
}

最新更新