我正在尝试从对象中删除数字属性:
function removeNumberValues(obj) {
for (i in obj) {
if (obj['i'] instanceof Number) {
delete obj['i'];
}
}
return obj;
}
但它并没有删除数字属性。 HALP?我错过了什么?
答案 0 :(得分:7)
您需要使用变量i
,而不是值'i'
,并且可以使用typeof
operator和number
作为值。
function removeNumberValues(object) {
var key;
for (key in object) {
if (typeof object[key] === 'number') {
delete object[key];
}
}
return object;
}
console.log(removeNumberValues({ a: 'foo', b: 42 }));

使用Object.keys
和Array#forEach
来迭代密钥。
function removeNumberValues(object) {
Object.keys(object).forEach(function (key) {
if (typeof object[key] === 'number') {
delete object[key];
}
});
return object;
}
console.log(removeNumberValues({ a: 'foo', b: 42 }));

答案 1 :(得分:0)
请改用typeof
。在这种情况下,它更可靠。除非值来自Number
构造函数,否则它不起作用。
const obj = {
str: "string",
num: 1,
str2: "string2",
num2: 2
};
console.log(removeNumberValues(obj));
function removeNumberValues(obj) {
Object.keys(obj).forEach(function(key) {
if (typeof obj[key] === 'number') {
delete obj[key];
}
});
return obj;
}