JavaScript 属性删除如果为假,则不删除,如果为真循环

javascript property delete if false nothing if true loop

本文关键字:如果 删除 循环 属性 JavaScript      更新时间:2023-09-26

我需要遍历对象键,如果属性为 false,则删除 keys 属性。这就是我到目前为止所拥有的,但我无法弄清楚我做错了什么。

function onlyTheTruthy() { 
 onlyTheTruthy.key;
  var prop;
  for (key in onlyTheTruthy){
    if (key != true) {
     delete onlyTheTruthy.key.prop
    }
  else {
       }
  }
  return onlyTheTruthy;
};

for...in循环中,使用 key 访问对象上的值。这是用括号完成的,例如 obj[key] .

function onlyTheTruthy(obj) {
  for (var key in obj) {
    if (!obj[key]) {
      delete obj[key];
    }
  }
  return obj;
}
function onlyTheTruthy() {
    onlyTheTruthy.key;
    var prop;
    for (key in onlyTheTruthy) {
        if (key != true) {
            delete onlyTheTruthy.key.prop
        } else {}
    }
    return onlyTheTruthy;
};

这是你的代码。

线:

  1. 你声明了一个名为 onlyTheTruthy 的函数,不带任何参数。但是,我认为应该采取一个:o
  2. 此行不执行任何操作。应将其删除。
  3. 将变量的作用域设置为 prop ,但不为其指定任何值。好。
  4. for...in循环。你可能想研究一下它到底有什么作用。除了在第 2 行之外,以前从未见过key变量,但这是一个不同的变量:属性 onlyTheTruthy .此外,您正在循环访问您所在函数的键:onlyTheTruthy 。我相信这不是你想要的。尝试:

    for (prop in o) {
    
  5. 检查key是否不等于 true。布尔值很少用作对象键。或:

    if (!o[prop]) { // Or, more verbosely:
    if (o[prop] === false) {
    
  6. 查找方括号 ( [] (。

  7. else .没有else怎么样?这不是必需的,你知道的。
  8. } 关闭for...in循环。
  9. 返回函数本身。不。o怎么样?或者,如果您最终修改了对象本身,则根本不需要返回。
  10. 函数声明末尾不需要分号。

祝您编码愉快!

固定版本:

function onlyTheTruthy (o) {
    for (var prop in o) {
        if (!o[prop])
            delete o[prop];
    }
}
相关文章: