无法形成结构并根据标志过滤掉值

我试图通过迭代选项卡数据来形成类似 expectedOutput 的结构,并在标志为真时过滤掉数据


let tabs = {'tab1': [{id:'1',mnemonic:'first',value:'jim',flag:false},

                     {id:'2',mnemonic:'second',value:'kim',flag:true}],

            'tab2':[{id:'1',mnemonic:'first',value:'jim',flag: true},

                    {id:'2',mnemonic:'second',value:'kim',flag: false}]}



let expectedOutput = {'tab1': [,

                     {id:'2',mnemonic:'second',value:'kim',flag:true}],

            'tab2':[{id:'1',mnemonic:'first',value:'newValue',flag:true},

                    ]}


let newTabs = Object.fromEntries(

  Object.entries(tabs).map(([tab,data]) => {

    data = data.map(d => ({...d}));

    data.filter(d => d.flag == true)

    return [tab,data];

  })

);


console.log("original",tabs);

console.log("new",newTabs);


忽然笑
浏览 85回答 3
3回答

慕哥9229398

filter 不会改变原始数组,它只是返回过滤后的数组let tabs = {'tab1': [{id: '1', mnemonic: 'first', value: 'jim', flag: false},    {id: '2', mnemonic: 'second', value: 'kim', flag: true}],'tab2': [{id: '1', mnemonic: 'first', value: 'jim', flag: true},    {id: '2', mnemonic: 'second', value: 'kim', flag: false}]}let expectedOutput = {'tab1': [,    {id: '2', mnemonic: 'second', value: 'kim', flag: true}],'tab2': [{id: '1', mnemonic: 'first', value: 'newValue', flag: true},]}let newTabs = Object.fromEntries(   Object.entries(tabs).map(([tab, data]) => {     data = data.map(d => ({...d}));    // filter doesnt change the original array, it just return filtered array    data = data.filter(d => d.flag === true)    return [tab, data];}));console.log("original", tabs);console.log("new", newTabs);

翻翻过去那场雪

您需要将过滤后的数据返回给创建的对象。您的 current.filter创建了一个未在任何地方使用的新过滤数组;旧数组不会发生变异。let tabs = {'tab1': [{id:'1',mnemonic:'first',value:'jim',flag:false},                     {id:'2',mnemonic:'second',value:'kim',flag:true}],            'tab2':[{id:'1',mnemonic:'first',value:'jim',flag: true},                    {id:'2',mnemonic:'second',value:'kim',flag: false}]}let expectedOutput = {'tab1': [,                     {id:'2',mnemonic:'second',value:'kim',flag:true}],            'tab2':[{id:'1',mnemonic:'first',value:'newValue',flag:true},                    ]}let newTabs = Object.fromEntries(  Object.entries(tabs).map(([tab,data]) => [    tab,    data.filter(({ flag }) => flag)  ]));console.log("new",newTabs);

qq_遁去的一_1

let tabs = {'tab1': [{id:'1',mnemonic:'first',value:'jim',flag:false},                     {id:'2',mnemonic:'second',value:'kim',flag:true}],            'tab2':[{id:'1',mnemonic:'first',value:'jim',flag: true},                    {id:'2',mnemonic:'second',value:'kim',flag: false}]}let expectedOutput = {'tab1': [,                     {id:'2',mnemonic:'second',value:'kim',flag:true}],            'tab2':[{id:'1',mnemonic:'first',value:'newValue',flag:true},                    ]}let newTabs = {};Object.entries(tabs).map((item) => {  newTabs[item[0]] = item[1].filter(({ flag}) => flag === true);});console.log("original",tabs);console.log("new",newTabs);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript