簡體   English   中英

使用Lodash從對象中刪除字段

[英]Remove a field from an object using Lodash

我只想在方法為add數據屬性發送到API服務器,如果將方法為delete ,則不希望發送數據。

我有

var body =
{
    id: 1,
    method: method,
    params: [
        {
            data: {
                "key1" : "value1",
                "key2" : "value2",
                "key3" : "value3"
            },

            url: `/url/anything`
        }
    ],
    session: session,
    verbose: 1
};

我試過了

if(method == 'delete') {
    _.pick(body.params[0], ['data']);
}

我也試過

if(method == 'delete') {
    _.pick(body.params[0],'data');
}

由於某種原因,我仍然看到我仍在發送data

如何調試這一點?

如果查看lodash pick文檔,您會發現它不會更改源對象,而是從源對象屬性創建新對象並返回新對象(如果要從源中刪除data屬性)對象,可以使用lodash中unset方法從對象或一組道具中刪除屬性,也可以使用delete運算符

使用_.assign

var body =
{
    id: 1,
    method,
    params: [
        _.assign({url: `/url/anything`}, method === 'delete'
            ? null
            : {
                  data: {
                      "key1" : "value1",
                      "key2" : "value2",
                      "key3" : "value3"
                  }
              }
        ) 
    ],
    session,
    verbose: 1
};

您可能需要這樣做。

if(method === 'delete') {
    body.params[0].data = undefined;
}

在這種情況下,我們通過分配undefined刪除data的所有內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM