javascript - 试图从对象中删除错误的属性

标签 javascript

我正在尝试删除计算结果不为真的对象属性。我做错了什么?

var object = {
  obj1: NaN,
  obj2: false,
  obj3: "Don't delete",
  obj4: "Please don't delete"

};

var onlyTruthy = function(object) {
  for (var key in object) {
    if (object[key] === false) {
      delete object[key];
    }
  }
  return(object)
};

最佳答案

用于删除所有falsy属性,您可以只检查值。

if (!object[key]) {
    delete object[key];
}

通过检查 object[key] === false,您可以与 false 进行严格比较。这意味着,将根据类型( bool 值)和相同的值检查该值。但你需要 - 有点 - 更少。只是检查一个不真实的值。

请记住,值为 0 的属性也会被删除。

工作代码:

var object = { obj1: NaN, obj2: false, obj3: "Don't delete", obj4: "Please don't delete" },
    onlyTruthy = function (object) {
        for (var key in object) {
            if (!object[key]) {
                delete object[key];
            }
        }
        return object;
    };

onlyTruthy(object);
console.log(object);

关于javascript - 试图从对象中删除错误的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37984933/

相关文章:

javascript - 不能使用 jQuery 添加两个小数

javascript - 方法与函数,以及其他问题

php - 形式变量传递

javascript - 如何将数组写入的字符串转换为真正的数组?

javascript - 如何从 XMLHttpRequest 获取进度

javascript - 使用 AJAX 调用进行 jQuery 卸载在 Chrome 中不起作用

javascript - Node.js的调试模块: how to avoid this tedious initialization?

javascript - Dojo:BorderContainer 和 ContentPanes 在自定义小部件模板中不起作用

JavaScript 如何从选定的文本中提取链接

javascript - 使用 coffeescript/javascript 'throw error' 还是 'throw new Error(error)'?