:)
我需要删除其值大于给定数字的属性。我已经看过这个问题了:How do I remove a property from a JavaScript object?和这个问题:Remove some properties from array of javascript objects而且这个问题:remove item from array javascript但我仍然无法得到我需要的理想答案。 (他们只返回数字或我不需要的数组的其他部分。)
这是我写的代码:
function removeNumbersLargerThan(num, obj) {
arr = [];
for (var i = 0; i < obj.length; i++) {
return arr[i] > 5;
}
}
var obj = {
a: 8,
b: 2,
c: 'montana'
};
removeNumbersLargerThan(5, obj);
这是我的结果:
console.log(obj); // => { a: 8, b: 2, c: 'montana' }
正确的console.log应该是这样的:
{ b: 2, c: 'montana' }
有什么建议吗?谢谢! PS:我是新人,即使我试图遵守这些规则,我的问题似乎也会被大大降低。如果我发布的帖子不正确,有人可以告诉我,如果他们打算让我失望,我会做错吗?这样我可以改进。我在这里学习! :D非常感谢!
答案 0 :(得分:5)
function removeNumbersLargerThan(num, obj) {
for (var key in obj) { // for each key in the object
if(!isNaN(obj[key]) && obj[key] > num) // if the value of that key is not a NaN (is a number) and if that number is greater than num
delete obj[key]; // then delete the key-value from the object
}
}
var obj = {
a: 8,
b: 2,
c: 'montana'
};
removeNumbersLargerThan(5, obj);
console.log(obj);
答案 1 :(得分:2)
Object.keys()
函数将给定对象的所有keys
作为数组返回。然后,迭代它们并检查指定的键是否大于给定的数字,如果是这样 - 删除它。
var obj = { a: 8, b: 2, c: 'montana', d: 12 };
function clean(obj, num){
Object.keys(obj).forEach(v => obj[v] > num ? delete obj[v] : v);
console.log(obj);
}
clean(obj, 5);
&#13;
答案 2 :(得分:2)
javascript
不检查对象属性值。您可以使用Object.entries()
获取属性键,值对的数组,for..of
循环以迭代属性和值,如果值等于或大于5
则删除对象的属性
function removeNumbersLargerThan(num, obj) {
for (let [key, value] of Object.entries(obj)) {
if (typeof value === "number" && value > 5) delete obj[key]
}
}
答案 3 :(得分:0)
function removeNumbersLargerThan(num, obj) {
for(const property in obj){
if(obj[property] > num){
delete obj[property];
}
}
console.log(obj)
}
/*
1. compare the numbers
2. delete what you need to
3. RETURN your needs
You can check MDN for for...in
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in
*/