मैं सभी "नई" विशेषताओं को भी गलत अपडेट करने के लिए संघर्ष कर रहा हूं। नीचे एक उदाहरण वस्तु है।

const msgdata = {
"1511207758": {
    "userid": "1000015977",
    "text": "hello",
    "new": false,
    "subjecttitle": null,
    "subjectcontent": null,
    "datetime": "2017-11-20T19:55:58.000Z"
},
"1511277428": {
    "userid": "1000000000",
    "text": "hey hi",
    "new": false,
    "subjecttitle": null,
    "subjectcontent": null,
    "datetime": "2017-11-21T15:17:08.000Z"
},
"1640341426": {
    "userid": "1000000000",
    "text": "hellow how are you?",
    "new": false,
    "subjecttitle": null,
    "subjectcontent": null,
    "datetime": "2021-12-24T10:23:45.706Z"
},
"1640342296": {
    "userid": "1000000000",
    "text": "asdfasdf",
    "new": true,
    "subjecttitle": null,
    "subjectcontent": null,
    "datetime": "2021-12-24T10:38:16.089Z"
},
"1640342382": {
    "userid": "1000000000",
    "text": "fxvfv",
    "new": true,
    "subjecttitle": null,
    "subjectcontent": null,
    "datetime": "2021-12-24T10:39:41.910Z"
}

}

जब मैं निम्नलिखित का प्रयास करता हूं तो मैं ऑब्जेक्ट संरचना को एक सरणी में बदल देता हूं लेकिन मुझे ऑब्जेक्ट/कुंजी संरचना को बनाए रखने की आवश्यकता होती है - बस नए मान को गलत में बदलें।

    let newMessages = {}
    if (payload.length > 0) {
        payload.map((item) => {
            if (messagesData && messagesData[item.userid]) {
                newMessages = Object.keys(messagesData[item.userid].messages).map((key) => ({ ...newMessages[item.userid].messages[key], new: false }))
            }
            return true
        })

        console.dir('newMessages')
        console.dir(newMessages)

वापसी वस्तु एक मानक सरणी है - नक्शा ऐसा करता है ... उदाहरण: 0,1,2 कुंजी ...

मैं ऑब्जेक्ट स्ट्रक्चर को कैसे बनाए रख सकता हूं और बस नया एटीआर बदल सकता हूं।

धन्यवाद

1
Adam 25 पद 2021, 01:50
Object.entries(msgdata).reduce((acc, [key, value]) => { ... }, {}); का उपयोग करें और फ़ंक्शन के अंदर, कॉपी की कुंजी सेट करने के लिए acc[key] = { ...value, new: false }; करें, फिर return acc; (इसे स्पष्ट रूप से और जानबूझकर उत्तर के रूप में पोस्ट न करें, जो कोई भी सोच रहा है)
 – 
Chris G
25 पद 2021, 02:42

1 उत्तर

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

आप वस्तुओं की प्रविष्टियां map() कर सकते हैं, new मान को false में बदल सकते हैं और नई वस्तु बनाने के लिए प्रविष्टियां लौटा सकते हैं।

const msgdata = {
  "1511207758": {
    "userid": "1000015977",
    "text": "hello",
    "new": false,
    "subjecttitle": null,
    "subjectcontent": null,
    "datetime": "2017-11-20T19:55:58.000Z"
  },
  "1511277428": {
    "userid": "1000000000",
    "text": "hey hi",
    "new": false,
    "subjecttitle": null,
    "subjectcontent": null,
    "datetime": "2017-11-21T15:17:08.000Z"
  },
  "1640341426": {
    "userid": "1000000000",
    "text": "hellow how are you?",
    "new": false,
    "subjecttitle": null,
    "subjectcontent": null,
    "datetime": "2021-12-24T10:23:45.706Z"
  },
  "1640342296": {
    "userid": "1000000000",
    "text": "asdfasdf",
    "new": true,
    "subjecttitle": null,
    "subjectcontent": null,
    "datetime": "2021-12-24T10:38:16.089Z"
  },
  "1640342382": {
    "userid": "1000000000",
    "text": "fxvfv",
    "new": true,
    "subjecttitle": null,
    "subjectcontent": null,
    "datetime": "2021-12-24T10:39:41.910Z"
  }
}

const result = Object.fromEntries(Object.entries(msgdata).map(([k, v]) => {
  return [k, { ...v, new: false }]
}));

console.log(result);
1
axtck 25 पद 2021, 02:52