用Lodash省略嵌套属性

Hed*_*dge 3 javascript lodash

我试图摆脱属性5MinuteRate15MinuteRate以下对象.

var object = { requestsPerSecond:
   { mean: 1710.2180279856818,
     count: 10511,
     'currentRate': 1941.4893498239829,
     '1MinuteRate': 168.08263156623656,
     '5MinuteRate': 34.74630977619571,
     '15MinuteRate': 11.646507524106095 } };
Run Code Online (Sandbox Code Playgroud)

Lodash的omit() - 函数似乎不适用于嵌套对象.以下代码不起作用:

console.log(_.omit(object, 'requestsPerSecond.count'));
Run Code Online (Sandbox Code Playgroud)

编辑:

我尝试了这个,但它不能正常工作:

var subObject = _.omit(object.requestsPerSecond, '5MinuteRate', '15MinuteRate');

console.log(_.merge(object, subObject));
Run Code Online (Sandbox Code Playgroud)

J. *_*tus 6

你快到了.刚分配这将是你的结果subObjectobject.requestsPerSecond.

var object = {
  requestsPerSecond: {
    mean: 1710.2180279856818,
    count: 10511,
    'currentRate': 1941.4893498239829,
    '1MinuteRate': 168.08263156623656,
    '5MinuteRate': 34.74630977619571,
    '15MinuteRate': 11.646507524106095
  }
};

object.requestsPerSecond = _.omit(object.requestsPerSecond, '5MinuteRate', '15MinuteRate');

console.log(object);
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js"></script>
Run Code Online (Sandbox Code Playgroud)


Cla*_*diu 6

Lodash _.omit适用于嵌套对象。自从您提出问题以来,他们似乎改进了该功能:)

object = _.omit(object, 'requestsPerSecond.5MinuteRate', 'requestsPerSecond.15MinuteRate');
Run Code Online (Sandbox Code Playgroud)

更新

omit将从 Lodash 5 开始删除


aem*_*nge 5

使用unset:https : //lodash.com/docs#unset,它会变得更干净:

var obj = { 
  requestsPerSecond: { 
    mean: 1710.2180279856818,
    count: 10511,
    'currentRate': 1941.4893498239829,
    '1MinuteRate': 168.08263156623656,
    '5MinuteRate': 34.74630977619571,
    '15MinuteRate': 11.646507524106095 
  } 
};

_.forEach(['requestsPerSecond.5MinuteRate', 'requestsPerSecond.15MinuteRate'], 
  function(omitProperty) {
    obj = _.unset(obj, omitProperty);
  }
);

// Or avoiding the "extra" loop.
obj = _.unset(obj, 'requestsPerSecond.5MinuteRate');
obj = _.unset(obj, 'requestsPerSecond.15MinuteRate');
Run Code Online (Sandbox Code Playgroud)