簡體   English   中英

用lodash重置對象數組

[英]reset array of objects with lodash

如何重置與“ db”不同的數組對象的屬性? 我需要將除“ db”以外的其他值設置為空字符串。

var arr =   [
  {
    "db": "RHID",
    "prv_value": "1",
    "nxt_value": "1",
    "diagnostic": "1"
  },
  {
    "db": "CD_DOC_ID",
    "prv_value": "2",
    "nxt_value": "2",
    "diagnostic": "2"
  },
  ...
]

使用map函數,它需要一個數組和一個轉換函數。 它將每個元素傳遞到函數中進行修改。

_.map(arr, function(curr) {
    for (var prop in curr) {
        // Please read http://phrogz.net/death-to-hasownproperty
        if (curr.hasOwnProperty(prop) && prop != 'db') {
            curr[prop] = '';
        }
    } 

    return curr;
});

這就是我要做的:

_.map(arr, function(i) {
  return _.assign(
    _(i).omit('db').mapValues(_.constant('')).value(),
    _.pick(i, 'db')
  );
});

本質上,這使用map()創建新對象的數組。 它使用assign()來構建映射對象(它基本上是串聯兩個對象)。 傳遞給assign()的第一個參數是刪除了db屬性的對象。 這是使用omit()完成的 刪除此屬性后,我們可以使用mapValues()將所有內容設置回空字符串。

現在,我們要做的就是重新添加db屬性,這就是為什么我們使用assign() pick()函數用於獲取db值。

暫無
暫無

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

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