[Intermediate Algorithm] - Everything Be True

題目

全部的東西都是真的!編輯器

完善編輯器中的every函數,若是集合(collection)中的全部對象都存在對應的屬性(pre),而且屬性(pre)對應的值爲真。函數返回ture。反之,返回false。函數

記住:你只能經過中括號來訪問對象的變量屬性(pre)。測試

提示

提示:你能夠有多種實現方式,最簡潔的方式莫過於Array.prototype.every()prototype

測試用例

  • every([{"user": "Tinky-Winky", "sex": "male"}, {"user": "Dipsy", "sex": "male"}, {"user": "Laa-Laa", "sex": "female"}, {"user": "Po", "sex": "female"}], "sex") 應該返回 true
  • every([{"user": "Tinky-Winky", "sex": "male"}, {"user": "Dipsy"}, {"user": "Laa-Laa", "sex": "female"}, {"user": "Po", "sex": "female"}], "sex")應該返回 false
  • every([{"user": "Tinky-Winky", "sex": "male", "age": 0}, {"user": "Dipsy", "sex": "male", "age": 3}, {"user": "Laa-Laa", "sex": "female", "age": 5}, {"user": "Po", "sex": "female", "age": 4}], "age") 應該返回 false
  • every([{"name": "Pete", "onBoat": true}, {"name": "Repeat", "onBoat": true}, {"name": "FastFoward", "onBoat": null}], "onBoat") 應該返回 false
  • every([{"name": "Pete", "onBoat": true}, {"name": "Repeat", "onBoat": true, "alias": "Repete"}, {"name": "FastFoward", "onBoat": true}], "onBoat") 應該返回 true
  • every([{"single": "yes"}], "single") 應該返回 true
  • every([{"single": ""}, {"single": "double"}], "single") 應該返回 false
  • every([{"single": "double"}, {"single": undefined}], "single")應該返回 false
  • every([{"single": "double"}, {"single": NaN}], "single") 應該返回 false

分析思路

  1. 判斷是否對象包含屬性,使用 Object.hasOwnProperty();
  2. 判斷屬性的值是否爲真,直接使用 Object[pro] 便可;

代碼

function every(collection, pre) {
  // Is everyone being true?
  return collection.every(function(element, index, array) {
    return (element.hasOwnProperty(pre) && element[pre]);
  });
}

every([{"user": "Tinky-Winky", "sex": "male"}, {"user": "Dipsy", "sex": "male"}, {"user": "Laa-Laa", "sex": "female"}, {"user": "Po", "sex": "female"}], "sex");
相關文章
相關標籤/搜索