/*
2018/08/25 更新日志:增加 六:条件操作符判断
2018/09/04 更新日志:增加 六.5.三元运算,六.1.注意下 ,七、eval函数使用示例
*/
一.数组Array常用方法
1. 使用reduce
const arr = [{
"code": "badge",
"priceList": [{
"amount": 3000
}]
},

{
"code": "DigitalPhoto",
"priceList": [{
"amount": 1990
}]
}
]

let arr2 = arr.reduce((pre, cur) => {
pre[cur.code] = cur.priceList
return pre
}, {})
console.log(arr2)
// 打印结果:

// { badge: [ { amount: 3000 } ],
// DigitalPhoto: [ { amount: 1990 } ] }

2. 使用map
let arrMap = [{
name: 'aaa',
age: 23,
address: 'henan'
}, {
name: 'bbbb',
age: 26,
address: 'hebei'
}, {
name: 'cccc',
age: 27,
address: 'anhui'
}]
arrMap = arrMap.map(obj => obj.name)
console.log(arrMap) //打印结果:['aaa','bbb','ccc']

3. 使用filter(过滤)
let arrFilter = [{
name: 'aaa',
age: 23,
address: 'henan'
}, {
name: 'bbbb',
age: 26,
address: 'hebei'
}, {
name: 'cccc',
age: 27,
address: 'anhui'
}]
arrFilter = arrFilter.filter(obj => obj.age > 23)
console.log(arrFilter) //结果:[26,27]

4. 使用sclice截取数组元素
const arr = [1, 3, 5, 7, 'aa'] //删除数组元素,也可以用sclice,
let rs = arr.sclice(0, 2)
console.log(rs) //[1,3]

5. delete方法删除数组指定元素和josn数据中的值
let user = [{
name: 'aaa',
age: 23,
address: 'henan'
}, {
name: 'bbbb',
age: 26,
address: 'hebei'
}, {
name: 'cccc',
age: 27,
address: 'anhui'
}]
delete user[0] //user中第一条数据被删除了
delete user[1].name //use中第二条数据的name属性被删除了
console.log(user.join(',')) //将数组变为了字符串,并用,号连接,变为字符串后,用user.split(','),按,号拆分,又可将字符串变为数组

6. 数组去除重复
Array.prototype.distinct = function() {
var arr = this,
result = [],
i,
j,
len = arr.length;
for (i = 0; i < len; i++) {
for (j = i + 1; j < len; j++) {
if (arr[i] === arr[j]) {
j = ++i;
}
}
result.push(arr[i]);
}
return result;
}
let arr = [1, 2, 1, 2, 3]
console.log(arr.distinct()) //[1,2,3]

7. 给josn数组去除重复, 然后按照指定字段, 给数组排序
let user = [{
name: 'aaa',
age: 23,
address: 'henan'
birthday: '2011-01-01'
}, {
name: 'bbbb',
age: 26,
address: 'hebei',
birthday: '2000-03-01'
}, {
name: 'cccc',
age: 27,
address: 'anhui',
birthday: '2000-03-01'
}, {
name: 'aaa',
age: 23,
address: 'henan'
birthday: '2011-01-01'
}, {
name: 'aaa',
age: 23,
address: 'henan'
birthday: '2011-01-01'
}, {
name: 'cccc',
age: 27,
address: 'anhui',
birthday: '2000-03-01'
}]

for (var i = 0; i < user.length; i++) {
for (var j = i + 1; j < user.length;) {
if (user[i].name == user[j].name && user[i].birthday == user[j].birthday && user[i].address == user[j].address && user[i].birthday == user[j].birthday) {
user.splice(j, 1) //删除数组中重复的json数据
} else j++
}
}
//指定数组按照生日大小排序
user.sort((p, c) => {
return new Date(c.birthday) - new Date(p.birthday)
})
console.log(user, '数组长度:' + user.length)

8. push 方法向数组中增加一条数据(shift, pop, unshift, 用的不多)
arr.push('xiaoming')

9. concat连接两个数组
var array1 = ['a', 'b', 'c'];
var array2 = ['d', 'e', 'f'];

console.log(array1.concat(array2))

10. 判断是否是数组
Array.isArray([1, 2, 3]) //true

11. 判断数组中是否包含元素includes
var array1 = [1, 2, 3];
console.log(array1.includes(2))

12. forEach循环遍历数组, 也可以使用for遍历, 参考文档

二、 常用字符串操作

1. 字符串截取substr, substring
const str = "abcdefghij";
console.log("(1,2): " + str.substr(1, 2)) // (1,2): bc

2. 去除前后空格trim
const orig = ' aaa ';
console.log(orig.trim()) // 'aaa'

3. match方法, 全局忽略大小写匹配包含的字符
var str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
var regexp = /[A-E]/gi;
var matches_array = str.match(regexp);
console.log(matches_array);
// ['A', 'B', 'C', 'D', 'E', 'a', 'b', 'c', 'd', 'e']

4. replace 替换字符串中的字符
var re = /apples/gi;
var str = "Apples are round, and apples are juicy.";
var newstr = str.replace(re, "oranges");
// oranges are round, and oranges are juicy.
console.log(newstr);

5. str.split(',') //字符串按照自己指定的符号拆分,注意,返回的是数组[a,b,c]

6. str.toLowerCase(), str.toUpwerCase() //字符串转换为大小写ABC=>abc

7. 字符串链接 'a' + 'b' == 'ab', 'a'.concat('b') == 'ab'

8. str.includes('aa') 方法用于判断一个字符串是否包含在另一个字符串中, 根据情况返回 true 或 false

7. 找出一个字符串的位置, 'aaccBB'.indexOf('c') //结果是2,字符串索引从0开始

三、 日期Date操作

1. 获取当前时间
var date = new Date() //date = new Date(‘2019-09-09’)当前时间
const time = date.getTime() //返回毫秒值
const year = date.getFullYear() //年月日
const month = date.getMonth() + 1
const date = date.getDate() //日
const hours = date.getHours()
const minutes = date.getMinutes() //分
const seconds = date.getSeconds() //秒 或者毫秒time/1000
const week = date.getDay() //获取是星期几

四、 条件语句
1.
switch...
case ....default, do ...
while,
while,
if ..else,
if ...
else if ..else

2. return语句终止函数的执行, 并返回一个指定的值给函数调用者

3. break终止while循环和for循环

4. 使用for..of,
for..in 遍历数组、 json
//遍历json
var obj = {
a: 1,
b: 2,
c: 3
}
for (var key in obj) {
console.log("obj." + key + " = " + obj[key]); //用"+"号拼接
console.log(`obj.${key} 对应的值: ${obj[key]}`) // `为ESC下的键
}
//遍历数组for..of
let arr = [10, 20, 30];
for (const value of arr) {
console.log(value);
}
//遍历数组for..in
for (const i in arr) {
console.log(arr[i]);
}
//遍历数组for循环
for (let k = 0; k < arr.length; k++) {
console.log(arr[k]);
}
五、 常用对象操作
1. JSON.parse(josnStr) //JSON字符串转为json对象 '{name:1}'=>{name:1}
2. JSON.stringify() //json对象转为JSON字符串 {name:1}=>'{name:1}'
3. Math.round(5.9) //返回四舍五入后的整数
4. Math.floor(45.95) //45
5. Math.ceil(7.004); // 8
6. parseInt('90.89') //将字符串转换为Number数字
7. Number('90.1089').toFixed(2) //四舍五入保留2位小数
8. isNaN(5) //5不是数字吗=>false,isNaN('5') '5'=>true,‘5’是字符串
7. 对象继承 Object.assign()
const o = {
a: 1,
b: 2,
c: 3
}
const t2 = Object.assign({
c: 4,
d: 5
}, o);
console.log(t2.c); //c=>3 继承会覆盖原有属性的值,注意继承的顺序
8. Object.keys() //获取json对象的键,并返回数组对象
9. Object.values() //获取json对象的值,并返回数组对象
10.e val() 函数会将传入的字符串当做 JavaScript 代码进行执行。
eval(new String("2 + 2")); // 返回了包含"2 + 2"的字符串对象
eval("2 + 2"); //4
11. js正则表达式
RegExp 构造函数创建了一个正则表达式对象, 用于将文本与一个模式匹配
a.验证邮箱格式
const regEmail = /^\s*\w+(?:\.{0,1}[\w-]+)*@[a-zA-Z0-9]+(?:[-.][a-zA-Z0-9]+)*\.[a-zA-Z]+\s*$/
if (!regEmail.test('35410@qq.com')) {
throw error('邮箱格式不对')
}
12. js中的apply(), call(), bind(), callback() //不常用,但有人用,我一个痘没用过

六、 条件判断操作符

1. 判断true, false
注:
false、 0、 NaN、 undefind、 null、 ''
都是false, 即没有值
例如:
// a != false 且 a != 0 且a != null
if (a != false && a != 0 && a != NaN && a != undefind && a != null && a != '') 可以简写为
if( !a)
a 有值的话, 可以写为
if (a) {}
2. 使用 || (或者)
const a = 'ab'
// 如果c != false&& c !=0&& c != NaN && c != undefind&& c != null && c != '' 的话,
// 返回c的值;否则,则返回a的值
let b = c || a //结果 b = ab,c没有值
if (b || c) { //如果b有值,或者c有值,执行console;此处c没有值,但b有值,也会执行console
console.log(b)
}

3. 使用 && 进行逐级判断
let user = {
name: ['zhang', 'li', 'liao'],
address: '',
email: '2343@qq.com',
cousrse: 'pragram'
}
//如果user的属性值都为空,或者user={}的话,结果都包含haha,即默认值显示
const mobile = user.mobile || '110' // 因为没有mobile属性,直接写user.mobile,会返回 undefind 加了 || 110,则返回 110,即默认值
const cousrse = user && user.cousrse //course ='pragram'
const address = user && user.address || 'haha' //结果 res = 'haha'
const email = user && user.email || 'haha@qq.com' //结果 email ='2343@qq.com'
const name = user && user.name && user.name.length > 0 ? user.name : ['haha'] //结果name =['zhang','li','liao'],若果name为[],则结果为['haha']

4. 使用 && 、 || 综合使用
//如果user2.name存在,且user.name 的值存在user.name != false&& user.name !=0&& user.name != NaN && user.name != undefind&& user.name != null && user.name != '' 的话,执行console
if (user2.name && user.name) {
console.log('a')
}
//如果 user&&user.name 或者 user2&&use2.name 或者user3&&use3.name 有值的话,执行console
if ((user && user.name) || (user2 && use2.name) || (user3 && use3.name)) {
console.log('a')
}
5. 三元运算:
let a = 3
let c = a == 3 ? 'c' : a //c=>c
let b = a == 2 ? 'a' : a == 1 ? 'b' : 'c' //if...else if...else
console.log(b) //b=>c
七、 eval函数使用示例
1. 正则表达式中使用
var name = 'aaa'
eval(`/${name}/ig`) //ig,全局匹配,忽略大小写,`/${name}/ig`模版语法,字符串类型,eval将字符串当作函数执行
2. 使用eval执行指定函数, 一般为动态调用function封装
var val = 1,
val2 = 2,
val3 = 3,
v1 = 'a',
v2 = 'b',
v3 = 'c';

eval(`test${val}(val)`); //....test1....1
eval(`test${val2}()`); //....test2....
eval(`test${val3}(v1,v2,v3)`); //....test3....0:a , 1:b , 2:c

function test1(val) {
console.log('....test1....' + val);
}

function test2() {
console.log('....test2....');
}

function test3() {
let str = ''
for (let i in arguments) { //arguments为隐式参数,类型为数组
str += i + ':' + arguments[i] + ' '
}
console.log('....test3....' + str);
}

JSMDN常用函数总结的更多相关文章

  1. oracle常用函数及示例

    学习oracle也有一段时间了,发现oracle中的函数好多,对于做后台的程序猿来说,大把大把的时间还要学习很多其他的新东西,再把这些函数也都记住是不太现实的,所以总结了一下oracle中的一些常用函 ...

  2. 总结js常用函数和常用技巧(持续更新)

    学习和工作的过程中总结的干货,包括常用函数.常用js技巧.常用正则表达式.git笔记等.为刚接触前端的童鞋们提供一个简单的查询的途径,也以此来缅怀我的前端学习之路. PS:此文档,我会持续更新. Aj ...

  3. [转]SQL 常用函数及示例

    原文地址:http://www.cnblogs.com/canyangfeixue/archive/2013/07/21/3203588.html --SQL 基础-->常用函数 --===== ...

  4. PHP常用函数、数组方法

    常用函数:rand(); 生成随机数rand(0,50); 范围随机数时间:time(); 取当前时间戳date("Y-m-d H:i:s"); Y:年 m:月份 d:天 H:当前 ...

  5. Oracle常用函数

    前一段时间学习Oracle 时做的学习笔记,整理了一下,下面是分享的Oracle常用函数的部分笔记,以后还会分享其他部分的笔记,请大家批评指正. 1.Oracle 数据库中的to_date()函数的使 ...

  6. Thinkcmf:页面常用函数

    Thinkcmf:页面常用函数 全站seo: 文章列表: {$site_seo_title}        <!--SEO标题--> {$site_seo_keywords}   < ...

  7. matlab进阶:常用功能的实现,常用函数的说明

    常用功能的实现 获取当前脚本所在目录 current_script_dir = fileparts(mfilename('fullpath')); % 结尾不带'/' 常用函数的说明 bsxfun m ...

  8. iOS导航控制器常用函数与navigationBar常用属性

    导航控制器常用函数触发时机 当视图控制器的View将要出现时触发 - (void)viewWillAppear:(BOOL)animated 当视图控制器的View已经出现时触发 - (void)vi ...

  9. 《zw版·Halcon-delphi系列原创教程》 zw版-Halcon常用函数Top100中文速查手册

    <zw版·Halcon-delphi系列原创教程> zw版-Halcon常用函数Top100中文速查手册 Halcon函数库非常庞大,v11版有1900多个算子(函数). 这个Top版,对 ...

随机推荐

  1. (二分查找 结构体) leetcode33. Search in Rotated Sorted Array

    Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...

  2. Python装饰器的进阶

    带参数的装饰器 示例一:Python自带的装饰器函数 from functools import wraps import time def Time(func1): @wraps(func1) de ...

  3. JN_0005:PS改变图片指定内容颜色

    1,打开图片. 2,选择选区,抽取出独立图存 选中选区,按ctrl + alt + j ,抽取图层. 3,选中图层,再按住 ctrl,点击图层图标 的白色选区处,即可选中图层中的内容. 4,选中图层内 ...

  4. CSS布局-flex布局入门教程

    前言 2009年,W3C 提出了一种新的方案----Flex 布局,可以简便.完整.响应式地实现各种页面布局.目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能. 查询兼容 F ...

  5. scheduling while atomic 出现的错误

    产生这种情况的原因: 1.当中断发生时,出现了调度做法, 2.另一个是spin_lock 里调用sleep, 让出调度, 另外线程又进行spin_lock, 导致死锁. 相关问题的链接     1.为 ...

  6. jquery.ajax()详解

    jQuery.ajax() 函数详解 traditional 如果你希望使用传统方式来序列化参数,将该属性设为true. 传递数组时, traditional必须为true var arr = []; ...

  7. day 14 - 1 生成器

    生成器 生成器 生成器的本质就是迭代器生成器的表现形式 生成器函数 生成器函数 —— 本质上就是我们自己写得函数 生成器表达式生成器函数: 含有 yield 关键字的函数就是生成器函数 特点: 调用函 ...

  8. python学习之Numpy.genfromtxt

    Python 并没有提供数组功能,虽然列表 (list) 可以完成基本的数组功能,但它并不是真正的数组,而且在数据量较大时,使用列表的速度就会慢的让人难受.Numpy 提供了真正的数组功能,以及对数据 ...

  9. vue ssr github 项目及其 文章

    https://github.com/Liao123/vue-js-webpack-ssr  这个项目可以完美运行  npm run start 是运行

  10. 字符串(3)AC自动机

    AC自动机真神奇,其实说白了就是在trie树上进行kmp模式匹配,不过刚接触确实有些难度,有些思想确实有些难以理解,所以学习的时候最好亲自手动模拟整个算法的全过程,那我就来写篇blog总结一下. 首先 ...