ckinmind / WebHub

📦前端资源/学习/问题整理中心,请看issue
109 stars 6 forks source link

关于js中in的用法 #22

Open ckinmind opened 7 years ago

ckinmind commented 7 years ago

在做FreeCodeCamp的时候遇到一个题目

var collection = {
    "2548": {
      "album": "Slippery When Wet",
      "artist": "Bon Jovi",
      "tracks": [ 
        "Let It Rock", 
        "You Give Love a Bad Name" 
      ]
    },
    "2468": {
      "album": "1999",
      "artist": "Prince",
      "tracks": [ 
        "1999", 
        "Little Red Corvette" 
      ]
    },
    "1245": {
      "artist": "Robert Palmer",
      "tracks": [ ]
    },
    "5439": {
      "album": "ABBA Gold"
    }
};

要操纵这个对象,有个要求是判断某个子对象中是否有某个属性存在,比如判断”2468“中有没有叫tracks的属性存在, 我用了in,但是发现怎么返回都是false
if(collection[2468].tracks in collection[2468]) //false
ckinmind commented 7 years ago

是我大脑短路了

collection[2468].tracks //在控制台输入,返回的是
["1999", "Little Red Corvette"] //返回数组值,所以正确的用法是

if("tracks" in collection[2468])  //true