任性不用for
先看最基础的技巧
示例一:
function assign(value) {
if (value) {
return value;
} else {
return 0;
}
}
console.log(assign(1)); //
console.log(assign()); //
改版:
function assign(value) {
return value = value || 0 ;
}
console.log(assign(1)); //
console.log(assign()); //
多说一点,jQuery中$.extend()也是同样道理。
示例二:
function addOne(value) {
if (value > 5) {
return (value + 1);
} else {
return value;
}
}
console.log(addOne(1)); //
console.log(addOne(10)); //
改版:
function addOne(value) {
var temp;
return temp = (value > 5 && value + 1) || value;
}
console.log(addOne(1)); //
console.log(addOne(10)); //
在提下缺点,上述两个示例的缺点:降低了代码的可读性。只能实现一句表达式。
示例三:
var cats=[
{name:'a',month:2},
{name:'b',month:3},
{name:'c',month:12},
{name:'d',month:10},
{name:'e',month:5}
]; var lookForCats=[]; for (var i = 0; i < cats.length; i++) {
var cat = cats[i];
if(cat.month>5){
lookForCats.push(cat.name);
}
} console.log(lookForCats); // ["c", "d"]
改版:
var cats=[
{name:'a',month:2},
{name:'b',month:3},
{name:'c',month:12},
{name:'d',month:10},
{name:'e',month:5}
]; function lookForStandard(cat) {
return cat.month>5;
} function getName(cat) {
return cat.name;
} lookForCats=cats.filter(lookForStandard).map(getName); console.log(lookForCats); // ["c", "d"]
缺点:新建了数组。
补充一点:关于filter和map
filter:
1、filter() 方法使用指定的函数测试所有元素,并创建一个包含所有通过测试的元素的新数组;
2、参数为一个方法,该方法有3个参数,value(值),index(索引),array(被遍历的数组) ;
3、会生成新的数组。
map:
1、map() 方法返回一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组;
2、参数同filter;
3、会生成新的数组。
两者区别:
map():返回一个新的Array,每个元素为调用func的结果。修改数组每一项
filter():返回一个符合func条件的元素数组。找出数组中符合标准的每一项
实际应用:
实现功能:点击按钮涮选出用户所选爱好的值。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="../base/jquery-3.1.0.js"></script>
</head>
<body>
<div>
性别:
<label>
<input type="radio" value="boy" name="sex">男
</label>
<label>
<input type="radio" value="girl" name="sex">女
</label>
<br>
爱好:
<label>
<input type="checkbox" value="1" name="hobby">足球
</label>
<label>
<input type="checkbox" value="2" name="hobby">篮球
</label>
<label>
<input type="checkbox" value="3" name="hobby">乒乓球
</label>
<label>
<input type="checkbox" value="4" name="hobby">橄榄球
</label>
<label>
<input type="checkbox" value="5" name="hobby">游泳
</label>
<label>
<input type="checkbox" value="6" name="hobby">游戏
</label>
<br>
<button id="btn">提交</button>
</div>
<script src="main.js"></script>
</body>
</html>
$(function () {
var $btn = $('#btn'),
$checkBox = $('input[name="hobby"]');
function isChecked(target) {
return target.checked;
}
function getValue(target) {
return target.value;
}
$btn.on('click', function () {
var checkedItems = $checkBox.toArray().filter(isChecked).map(getValue);
console.log(checkedItems);
});
});
任性不用for的更多相关文章
- 任性,新建对象不用new
先看最简单的一个例子: window.meng = window.meng || {}; (function () { /** * * @param {Number}width * @param {N ...
- 重大新闻:借贷宝不用绑卡了,借贷宝APP推出肖像识别新功能!
动动手指,20元人民币立即到手:http://www.cnblogs.com/mfryf/p/4754384.html 滴滴打车烧钱十几个亿,狂送打车券,很多人天天免费坐车! 去年年初百度钱包注册奖励 ...
- 算法面试题:一个List<Student>,要求删除里面的男生,不用Linq和Lamda,求各种解,并说明优缺点!
算法面试题:一个List,要求删除里面的男生,不用Linq和Lamda,求各种解,并说明优缺点! 解题思路 这是群里某位小伙伴去面试碰到的面试题,从题目本身来看,面试官应该是要考察面试者对泛型 Lis ...
- 为什么不用rxjava?
rxjava等系列产品.思想是很好的,但是被大多数人用成了一坨屎! 就拿rx最经典的那个例子来说: 假设有这样一个需求:界面上有一个自定义的视图 imageCollectorView ,它的作用是显示 ...
- 52. 不用+、-、×、÷做加法[add two numbers without arithmetic]
[本文链接] http://www.cnblogs.com/hellogiser/p/add-two-numbers-without-arithmetic.html [题目] 写一个函数,求两个整数的 ...
- 用java PreparedStatement就不用担心sql注入了吗?
先感慨下,好久没写博客了,一是工作太忙,二是身体不太给力,好在终于查清病因了,趁着今天闲下来,迫不及待与读者交流,最后忠告一句:身体是活着的本钱! 言归正传,对java有了解的同学基本上都体验过JDB ...
- 有了jsRender,妈妈再也不用担心我用jq拼接DOM拼接的一团糟了、页面整齐了、其他伙伴读代码也不那么费劲了
写在前面 说来也很巧, 下午再做一个页面,再普通不过的分页列表,我还是像往常一样,基于MVC环境下,我正常用PagedList.MVC AJAX做无刷新分页,这时候问题就来了,列表数据中有个轮播图用到 ...
- 背水一战 Windows 10 (25) - MVVM: 通过 x:Bind 实现 MVVM(不用 Command)
[源码下载] 背水一战 Windows 10 (25) - MVVM: 通过 x:Bind 实现 MVVM(不用 Command) 作者:webabcd 介绍背水一战 Windows 10 之 MVV ...
- JS中用new创建对象与不用new创建对象区别:
function classA() { console.log(this); var that = this == window ? {} : this; that.name = "clas ...
随机推荐
- APUE学习笔记——5.5~5.7数据流的打开与读写
1.open #include <stdio.h> FILE *fopen(const char *restrict pathname,const char *restrict type) ...
- 创建python3.6的虚拟开发环境virtualenv
为了保证各个项目环境和插件的相对独立,使用virtualenv作为python的虚拟运行环境,这样在项目维护方面,减少在依赖包上所花费的时间. 1.安装 virtualenv虚拟环境插件 pip in ...
- Content-type与json对象/字符串杂谈
这几天在对接项目另一个乙方的下行接口,因为最近一直用php开发,所以当那边接口文档上规定了接口传参类型的 时候,瞬间搞混了,但是这次的出错也让我对http的数据传输有了新的认知. 1.http的数据传 ...
- Android程序员学WEB前端(5)-HTML(5)-框架集-Sublime
转载请注明出处:http://blog.csdn.net/iwanghang/article/details/76576279 觉得博文有用,请点赞,请评论,请关注,谢谢!~ 框架集: index7. ...
- 《Drools7.0.0.Final规则引擎教程》第4章 4.6 结果条件
结果条件 在Java中,如果有重复的代码我们会考虑进行重构,抽取公共方法或继承父类,以减少相同的代码在多处出现,达到代码的最优管理和不必要的麻烦.Drools同样提供了类似的功能.下面我们以实例来逐步 ...
- Java API访问ZK的权限控制
无权限访问结点 /** * 对于ZK的授权访问 * Created by liuhuichao on 2017/7/27. */ public class AutoSample { private s ...
- iOS数组排序 请求后,数组元素的排序 时间戳,最热,点赞数等
[ZOYSessionManager dataWithUrlString:GetVideoDataComment andParameter:@{@"id":userID,@&quo ...
- 你离BAT之间,只差这一套Java面试题
最近,各大公司开始了春招,很多人已经开始在准备面试了,特地来总结下初中级程序员应该掌握的面试题目.这篇面试指南,只适用于初中级程序员,其中不涉及分布式等问题.关于中高级的程序员问题,我后面可能再出一篇 ...
- vue实现简单评分效果
- JAVA多线程----用--进阶--》网络编程2
import java.io.*; import java.net.*; /** * 服务器端逻辑线程 */ public class LogicThread extends Thread { Soc ...