我的代码如下:
function every(collection, pre) { return collection.every(function(item){ return item.hasOwnProperty(pre) && Boolean(item[pre]); }); } every([{"single": ""}, {"single": "double"}], "single");
知识点1:数组的every()迭代方法,如果所有项都通过测试(返回true)才会返回true,所以也可称之为完整性测试。这意味我们应该时刻意识到callback函数里的return语句后的内容都会被转换成布尔值,如果写成return item[pre],那么它也会强制把它转换成布尔值,实际上就是给它加了个Boolean函数,所以这个函数写不写都一样。
知识点2:判断一个对象是否存一个特定的属性,hasOwnProperty()方法是检查实例属性中,如果不管属性存在于原型还是实例的话,用in操作符即可,如果要检查原型属性的话,就把这两种方法结合起来用,如果属性用in操作符检查结果为true,而用hasOwnProperty()检查结果为false,说明该属性存在于原型中,反之则存在于实例中。P151-152
知识点3:Boolean函数,可以对任何类型的数据使用,结果只会返回true或false,具体转换规则见P26.