如何在 Javascript 中更新嵌套對像數組中的鍵/值對

雷購買

這是我的數據結構:

[
    0:
        key1: value,
        key2: value,
        array:
            0:
                thisId: xxxxx,
                thisValue: value,
            1:
                notThisId: someId,
                notThisValue: value,
        key3: value
    1:
        key1: value
        key2: value
        array:
            0:
                anotherId: id
                anotherValue: value
        key3: value
]

您好,我有一個查詢正在返回:

thisIdRef: xxxxx, 
thisNewValue: newValue

是否可以將嵌套的“thisValue”更新為“thisNewValue”,其中“thisIdRef”等於“thisId”或“xxxxx”?

我在下面使用 findIndex 和 splice 做了類似的事情,但這是針對非嵌套鍵/值對的,我無法弄清楚如何找到嵌套 id,或者如果可能的話。

let newArray = oldArray;
const index = newArray.findIndex(post => post._id === editedPostId)
newArray.splice(index, 1, {
    ...newArray[index],
    post: editedContent
})

非常感謝任何幫助。

特里科特

我假設您要創建一個新數組,這樣原始數組及其嵌套結構不會發生變異。

這是您可以使用的函數:

function setDeep(original, editedPostId, editedContent) {
    return original.map(obj => {
        let i = obj.array.findIndex(item => item.thisId === editedPostId);
        if (i == -1) return obj;
        return {
            ...obj, 
            array: Object.assign([], obj.array, { 
                [i]: {
                    ...obj.array[i], 
                    thisId: editedPostId, 
                    thisValue: editedContent 
                }
            })
        }; 
    });
}

// Example call
let original = [{
    key1: 1,
    key2: 2,
    array: [{
        thisId: "xxxxx",
        thisValue: 3,
    }, {
        notThisId: "yyyy",
        notThisValue: 4,
    }],
    key3: 5
}, { 
    key1: 6, 
    key2: 7,
    array: [{
        anotherId: "zzzzz",
        anotherValue: 8
    }],
    key3: 9
}];

let editedPostId = "xxxxx";
let editedContent = 42;

console.log(setDeep(original, editedPostId, editedContent));

請注意,您為非嵌套結構提供的代碼似乎創建了一個新數組,但它仍然會改變原始數組。當您希望原件保持原樣時,您必須小心地對受影響的部分進行深度複製。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在對像數組中獲取具有唯一值的鍵?(JavaScript)

如何更改嵌套對像數組中的所有鍵名javascript

如何在javascript中將嵌套對象轉換為對像數組?

如何在javascript中打破對像數組中的對象

在 JavaScript 中通過鍵和嵌套值過濾對像數組

如何在Javascript中循環沒有索引的對像數組作為字段?

如何使用新鍵值映射新數組中的對像數組

如何在javascript中將數組轉換為嵌套對象?

如何從Javascript中的對像數組中搜索或比較值並根據輸入返回

如何在javascript中按日期範圍從對像數組中獲取唯一數據

如何在 MongoDB 中推入具有精確鍵值的對象嵌套數組?

在Javascript中替換嵌套對像中的數組

如何對可以有多個新生成的鍵的對像數組中的等效鍵的值求和?

如何將數據從對像傳遞到javascript中的新數組?

如何在javascript中將標題/鍵添加到多個對象的數組中?

如何使用javaScript將嵌套的對像數組轉換為一個對像數組?

用javascript嵌套對像中的值交換鍵

如何在要解析的嵌套對像數組中獲取 RxJs Observable 的值?

JavaScript 查找:如果對象鍵存在於另一個對像數組中,則更新數組中對象的值,類似於 excel 中的 v-lookup

如何使用鍵/值對將數組轉換為對象 Javascript

如何從對像數組中獲取特定鍵值的總和

如何在嵌套的對像數組中獲取對象路徑?

如果該對象包含在 javascript 中的對像數組中,如何檢查整個原始對象(不使用任何屬性)?

如何獲取數組中對值的數量?Javascript

如何根據 JavaScript 中對像數組中重複日期的出現次數求和?

React.useState 中的對像數組如何更新?

如何在 JavaScript 中將嵌套數組轉換為“鍵控”數組?

如何將鍵投影到數組中以生成對像數組?

如何在javascript中按array.objectProperty對數組項進行分組?