从对象中删除数字属性?

时间:2017-11-26 18:23:23

标签: javascript object

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

function removeNumberValues(obj) {
  for (i in obj) {
    if (obj['i'] instanceof Number) {
      delete obj['i'];
    }
  }
  return obj;
}

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

2 个答案:

答案 0 :(得分:7)

您需要使用变量i,而不是值'i',并且可以使用typeof operatornumber作为值。



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.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 }));




答案 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;
}