任性不用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 ...
随机推荐
- Idea_02_常用配置
一.前言 在上一节,我们安装并激活了IDEA,这一节我们来设置下Idea的常用配置: 项目相关配置 Idea常用配置 二.项目相关配置 运行Idea,出现下图 1.配置默认JDK 1.1 添加 SDK ...
- Qt实现简单的单例模式
单例模式十分的常见也很常用,Boost库中就有单例的泛型实现,Qt中,可以利用原子指针来实现一个单例模式: class SingleTon{ public: static SingleTon & ...
- 【转】busybox分析——arp设置ARP缓存表中的mac地址
[转]busybox分析——arp设置ARP缓存表中的mac地址 转自:http://blog.chinaunix.net/uid-26009923-id-5098083.html 1. 将arp缓存 ...
- C++设计模式之-模板模式
模板方法模式 在GOF的<设计模式:可复用面向对象软件的基础>一书中对模板方法模式是这样说的:定义一个操作中的算法骨架,而将一些步骤延迟到子类中.TemplateMethod使得子类可以不 ...
- APUE学习笔记——10.18 system函数 与waitpid
system函数 system函数用方便在一个进程中执行命令行(一行shell命令). 用法如下: #include <stdio.h> #include <stdlib.h> ...
- LINUX系统下APACHE中的CGI应用
该实验环境是在APACHE的配置内容的基础上实现的! 1.安装软件: yum install php -y ##安装完成后,可以在/etc/httpd/conf.d/目录下查看,有php ...
- open()参数宏的意义 O_TRUNC
C语言中一些基本函数 int _open(char *pathname,int access)为读或写打开一个文件, 按后按access来确定是读文件还是写文件,access值见下表 ┌──────┬ ...
- Xcode 9 俩个你必须知道的新功能
Xcode 9 beta 版已经可以下载了,不知道大家伙对这个新版本开发工具看法如何,最近我费了一番周折终于体验了一把,升级系统,下载Xcode,验证安装扒拉扒拉什么的,几乎搞了我一天,我做开发使用的 ...
- 【剑指offer】10A--求裴波那切数列的第n项,C++实现
#本文是牛客网<剑指offer>刷题笔记 1.题目 写入一个函数,输入n,输出裴波那切数列的第n项 2.思路 递归--时间和空间复杂度高 循环--时间和空间复杂度低,通过循环迭代计算第n项 ...
- python库openpyxl操作excel
废话不多说,看代码,不懂的留言. from openpyxl import * class ExcelUtil: ''' 读取excel文件内容''' def create_work_book(sel ...