मैं टैब डेटा को पुनरावृत्त करके अपेक्षित आउटपुट जैसी संरचना बनाने की कोशिश कर रहा हूं और ध्वज सत्य होने पर डेटा को फ़िल्टर कर रहा हूं

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);
0
chidananda 25 सितंबर 2020, 04:52

3 जवाब

सबसे बढ़िया उत्तर

फ़िल्टर मूल सरणी को नहीं बदलता है, यह केवल फ़िल्टर की गई सरणी देता है

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);
0
Besufkad Menji 25 सितंबर 2020, 04:59

आपको फ़िल्टर किए गए डेटा को बनाए गए ऑब्जेक्ट पर वापस करने की आवश्यकता है। आपका वर्तमान .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);
0
CertainPerformance 25 सितंबर 2020, 04:56
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);
0
Derek Wang 25 सितंबर 2020, 04:56