使用lodash清除另一个对象中不存在的对象中的所有属性

时间:2016-05-18 08:58:40

标签: javascript oop object lodash

如何清除datacopy

中不存在的pk的所有属性
var datacopy={
  "RHID": "3",
  "NOME_REDZ": "4455",
  "EMAIL": "jose.infante@demo5555.pt",
  "EMAIL_PESSOAL": "jose.infante@demo5555.pt",
  "TELEMOVEL_1": "(351) 936 090 982",
  "DT_NASCIMENTO": "0000-00-00",
  "rhidwf": "3",
  "DT_RowId": "3"
}

var pk={
  "RHID": {
    "type": "numeric"
  },
  "SEQ"{
  "type": "numeric"
  }
}

我知道lodash的力量并且知道这是可能的。

3 个答案:

答案 0 :(得分:2)

您可以使用keys()FB.Init()获取属性,然后从pk获取pick()属性,以使用datacopy属性列表保留关键值。< / p>

pk

var result = _.pick(datacopy, _.keys(pk));
var datacopy = {
  "RHID": "3",
  "NOME_REDZ": "4455",
  "EMAIL": "jose.infante@demo5555.pt",
  "EMAIL_PESSOAL": "jose.infante@demo5555.pt",
  "TELEMOVEL_1": "(351) 936 090 982",
  "DT_NASCIMENTO": "0000-00-00",
  "rhidwf": "3",
  "DT_RowId": "3"
};

var pk = {
  "RHID": {
    "type": "numeric"
  },
  "SEQ": {
    "type": "numeric"
  }
};

var result = _.pick(datacopy, _.keys(pk));

document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');

答案 1 :(得分:1)

const _ = require('lodash');
...    
datacopy = _.omit(datacopy, _.difference(_.keys(datacopy), _.keys(pk)))

答案 2 :(得分:0)

&#34;纯&#34;没有任何&#39; lodash&#39;(作为替代方案)的javascript单行解决方案:

Object.keys(datacopy).forEach((k) => !pk[k] && delete datacopy[k]);

console.log(JSON.stringify(datacopy, 0, 4));

输出:

{
    "RHID": "3"
}