简体   繁体   English

如何遍历对象以删除所有大于100的数字?

[英]How would I loop through an object to remove all numbers greater than 100?

I get that I need to use a for in loop, I'm just not sure what I need to put in to remove the properties greater than 100. 我得到我需要使用for in循环,我只是不确定删除大于100的属性需要输入什么。

Here is the object: 这是对象:

var deleteTheBigNumbers = {
  first: 10,
  second: 20,
  third: 110,
  fourth: 200
}
  for (let key in obj) {
         if (obj[key] >= 100) {
              delete obj[key];
          }
   }

There are numerous ways to handle this. 有很多方法可以解决这个问题。 This is one possible way: 这是一种可能的方法:

 var deleteTheBigNumbers = { first: 10, second: 20, third: 110, fourth: 200 } for (var key in deleteTheBigNumbers) { if (deleteTheBigNumbers[key] >= 100) { delete deleteTheBigNumbers[key]; } } console.log(deleteTheBigNumbers); 

Lodash also has a _.pickBy function which can do this as well: Lodash还具有_.pickBy函数,该函数也可以执行以下操作:

 var deleteTheBigNumbers = { first: 10, second: 20, third: 110, fourth: 200 } console.log(_.pickBy(deleteTheBigNumbers, (num) => num <= 100)); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script> 

You could write a more generic filtering function. 您可以编写一个更通用的过滤功能。

 var deleteTheBigNumbers = { first: 10, second: 20, third: 110, fourth: 200 }; Object.prototype.oFilter = function (f) { var newobj = {}; var keys = Object.getOwnPropertyNames(this); for (var i = 0; i < keys.length; i += 1) { if (f(this[keys[i]])) { newobj[keys[i]] = this[keys[i]]; } } return newobj; }; var filtered = deleteTheBigNumbers.oFilter(function (v) { return v <= 100; }); console.log(JSON.stringify(filtered)); 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM