Discuss / JavaScript / 答案

答案

Topic source

lmtooT_T

#1 Created at ... [Delete] [Delete and Lock User]
selectAll.click(function(){
     langs.prop('checked',this.checked);
     selectAllLabel.toggle(!this.checked);
     deselectAllLabel.toggle(this.checked);
});
invertSelect.click(()=>langs.click());
langs.click(function(){
     var isAllChecked=langs.map(function(){return this.checked;}).get().reduce((x,y)=>x&&y);
     if(isAllChecked||selectAll.is(":checked")){
         selectAll.prop('checked',isAllChecked);
         selectAllLabel.toggle(!isAllChecked);
         deselectAllLabel.toggle(isAllChecked);
     }
});

map reduce,这么短而优雅的代码,膜拜!

辉悟世间

#3 Created at ... [Delete] [Delete and Lock User]

写的真好!

大神

pan晓li

#5 Created at ... [Delete] [Delete and Lock User]

请问: var isAllChecked=langs.map(function(){return this.checked;}).get().reduce((x,y)=>x&&y); 这一句代码想要表达的是什么呢? 本人小白看不懂,希望知道的哥哥们能告诉一下哈

天舞商城

#6 Created at ... [Delete] [Delete and Lock User]

大神 真牛

韩背厶

#7 Created at ... [Delete] [Delete and Lock User]

var isAllChecked=langs.map(function(){return this.checked;}).get().reduce((x,y)=>x&&y);

这句话是判断是否全选;可以分解一下

langs.map(function(){return this.checked;}) 对所有langs的checked属性遍历 返回jQuery 封装的数组 使用get()方法得到元素全是布尔值的普通数组 然后对数组运用reduce()方法传入一个匿名函数 求 与

韩背厶

#8 Created at ... [Delete] [Delete and Lock User]

reduce()可以换成.every((x)=>x)

如果改为

var isAllChecked = langs.map(()=>this.checked).get().reduce((a,b)=>a&&b);

为什么会总是返回true呢?map里面这么用箭头函数有问题吗?

lmtooT_T

#10 Created at ... [Delete] [Delete and Lock User]

请注意箭头函数和匿名函数的区别:箭头函数的this指向window对象,而匿名函数的this指向call这个函数的对象


  • 1

Reply