从对象中分离truthy和falsey值

时间:2015-11-17 04:36:54

标签: javascript function loops object

我正在开发一个读取

的java挑战
//In the function below you'll be passed a user object. Loop through the user object checking to make sure that each value is truthy. If it's not truthy, remove it from the object. Then return the object. hint: 'delete'.

function truthyObjLoop(user) {
  //code here

我想出了......

  var user = {};
  user.name = {};
  user.age = {};


  if (user !== false)
  {
   return user; 
  } else {
    delete user;
  }

}

然而,每当我尝试它时,它返回错误函数返回 {“姓名年龄”:{}} 代替 { “名”: “欧内斯特”, “年龄”:50} 过了 { “名称”: “欧内斯特”, “年龄”:50, “时髦”:假} ....

任何人都可以帮助我理解为什么会发生这种情况或者我在这里使用错误的符号吗?谢谢。

2 个答案:

答案 0 :(得分:0)

var user = {};
user.name = {};
user.age = {};

用户名和年龄应该是值,而不是对象。花括号提到对象,你错了。请使用以下代码

var user = {};
user.name = "john";
user.age = 12;

另请阅读本教程: http://www.w3schools.com/json/

答案 1 :(得分:0)

文字说“你将被传递一个用户对象”。这意味着用户被定义在函数之外,并被传入。这就是你要找的东西:

function truthyObjLoop(user) {
    for (var k in user) {
        if (!user[k]) delete user[k]
    }
    console.log(user);
}

然后,您应传入具有各种不同属性的“用户”,以演示测试的工作原理:

var person = {
    age: 29,
    gender: "male",
    pets: [
        {
            type: "cat",
            name: "smelly"
        }
    ],
    children: 0,
    married: false
};

truthyObjLoop(person);

这是一个jsfiddle: https://jsfiddle.net/mckinleymedia/tb823pyp/

请注意,它会删除值为“false”或“0”的属性。