从对象中删除数字属性?

Adv*_*n01 3 javascript object

我正在尝试从对象中删除数字属性:

function removeNumberValues(obj) {
  for (i in obj) {
    if (obj['i'] instanceof Number) {
      delete obj['i'];
    }
  }
  return obj;
}
Run Code Online (Sandbox Code Playgroud)

但它并没有删除数值属性.HALP?我错过了什么?

Nin*_*olz 7

您需要使用变量i而不是值'i',您可以使用typeof运算符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 }));
Run Code Online (Sandbox Code Playgroud)

使用Object.keysArray#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 }));
Run Code Online (Sandbox Code Playgroud)