删除对象中的虚假值

wil*_*azy 0 javascript object for-in-loop

我试图循环一个对象中的所有属性并删除所有虚假的内容,然后返回使用delete. 显然我做错了什么......这是我到目前为止编写的代码。

var obj = {
  a: undefined,
  b: "banana",
  c: 0,
  d: false,
  e: "",
  f: "apple",
  g: 23
}

var truthy = function (obj) {
  for (var i in obj) {
  if (obj[i] === null || obj[i] === undefined) {
  delete obj[i];
  }
 } return obj;
}
Run Code Online (Sandbox Code Playgroud)

这是实际的问题:创建一个函数,它接收一个对象,循环遍历它的所有属性,并删除所有错误的属性。然后返回传入的对象。(提示:删除)

Mat*_*nen 5

  1. 返回对象是多余的,因为您正在修改传入的对象。如果您想返回一个过滤掉属性的新对象,请在函数中创建一个新对象并将要保留的属性复制到其中。
  2. 您对“虚假”的定义与 JavaScript 不完全一致。如果你想要和其他地方一样的“假”,就说if (!obj[i]). 假设这当然是您想要的,但不考虑false“虚假”有点愚蠢。

你的实际问题是什么?