[英]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.