为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

忽然笑 2023-03-24 16:44:45
我试图通过迭代选项卡数据来形成类似 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);
查看完整描述

3 回答

?
慕哥9229398

TA贡献1877条经验 获得超6个赞

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);


查看完整回答
反对 回复 2023-03-24
?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

您需要将过滤后的数据返回给创建的对象。您的 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);


查看完整回答
反对 回复 2023-03-24
?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

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);


查看完整回答
反对 回复 2023-03-24
  • 3 回答
  • 0 关注
  • 83 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信