const arr = [1, 2, 3, 5, 'a', 'b']

/**
*
* length
* 这个只能被 称之为 数组的原生属性, 返回 一个 number
* arr.length
*/ console.log(arr.length) // 6 /**
* 按照方法类型 来方便记忆 栈方法(后进先出) 1
* push
* 这个方法是向数组末尾添加一个新的元素, 返回的是数组的 新长度, 并改变了原来的数组
* arr.push()
*/ const resArr1 = arr.push(1)
console.log(resArr1) // 7
console.log(arr) // [1, 2, 3, 5, "a", "b", 1] /**
* 栈方法(后进先出) 2
* pop
* 这个方法是 删除数组中最后一个元素并且返回该元素 (如果数组为空 则返回什么呢) 并且原数组已被修改
* arr.pop()
*/ console.log(arr.pop()) // 1
console.log(arr) // [1, 2, 3, 5, "a", "b"]
console.log([].pop()) // undefined /**
* 按照列队方法 (先进先出) 1
* shift
* 这个方法是 删除数组中 第一 个元素并且返回该元素 (如果数组为空 则返回什么呢) 并且原数组已被修改
* arr.shift()
*/ console.log(arr.shift()) // 1
console.log(arr) // [2, 3, 5, "a", "b"]
console.log([].shift()) // undefined /**
* 按照列队方法 (先进先出) 2
* unshift
* 这个方法是 想数组中 的 首位添加 元素 并返回新数组的 长度 (如果数组为空 则返回什么呢) 并且原数组已被修改
* arr.unshift()
*/ console.log(arr.unshift()) // length 5
console.log(arr) // [2, 3, 5, "a", "b"]
console.log([].unshift()) // length 0 console.log(arr.unshift([11])) // 6
console.log(arr) // [11, 2, 3, 5, "a", "b"] /**
* 按照转换方法来区分
* join
* 该方法 用于将数组中的所有 元素放入一个字符串中, 元素通过制定的 分隔符 进行分割。 返回一个字符串
* arr.join()
*/ console.log(arr.join()) // 11,2,3,5,a,b
console.log(arr.join(".")) // 11.2.3.5.a.b
console.log(arr.join("-")) // 11-2-3-5-a-b /**
* 重排序方法 1
* reverse
* 该方法 会对反转数组项的顺序, 并改变原 数组
* arr.reverse()
*/ arr.shift() console.log(arr.reverse()) // ["b", "a", 5, 3, 2]
console.log(arr) // ["b", "a", 5, 3, 2] /**
* 重排序方法 2
* sort
* 该方法 会对数组进行从小到大的 排序, 并改变原 数组
* 因为 在使用 sort 方法时候, 该方法 会先 使用 tostring 方法,将数组中每一项转换成字符串,
* 然后 字符串 之间的 大小的 比较是 通过 Unicode 字符编码来比较的。
* arr.sort()
*/ console.log(arr.sort()) // [2, 3, 5, "a", "b"] console.log('5'.charCodeAt()) // 55
console.log('15'.charCodeAt()) // 49 // 所以我们 常常 会封装一个 比较大小的函数 function compare (m, n) {
return m - n
} console.log(arr.sort(compare)) /**
*
* 操作方法 1
* concat()
* 该方法 用于 连接 两个 或者多个 数组
* arr.concat(arr1)
*/ console.log(arr.concat([11,22,33])) // [2, 3, 5, "a", "b", 11, 22, 33] /**
*
* 操作方法 2
* slice(start, end)
* 该方法 用于 连接 两个 或者多个 数组
* arr.slice(start, end)
* 如果 start 或者 end 小于 0
* -1 指最后一个元素,-2 指倒数第二个元素,以此类推。
*/ console.log(arr.slice(1,5)) // [3, 5]
console.log(arr) /**
*
* 操作方法 3
* splice(start, length, eleX) 起始位置、0(要删除的项数)和要插入的项
* 该方法 有删除,插入,替换的功能
* arr.splice(start, length, eleX)
* 如果 start 小于 0 start = 0
* eleX 为 添加的 元素
*/ console.log(arr.splice(1, 0, 222)) // [2, 222, 5, "a", "b", 11, 22, 33] /**
*
* ************************ 以下为 ES5 中新增的 9 个方法(可能会和上面的有重复) *****************************
*
*/ /**
*
* forEach()
* 功能: 从头到尾遍历数组,为每个元素调用 指定函数
* forEach( function(value, index, arr) {} )
* value 为 数组中被遍历的每个值, index 为 数组索引, arr 为数组本身
*/ arr.forEach( (v, i, arr) => {
arr[i] = v + 1
}) console.log(arr) // [3, 223, 4, 6, "a1", "b1"] /**
*
* map()
* 功能: 调用数组中的每一个元素 并 传递给制定的函数,返回一个新数组. 并不会改变原数组
* forEach( function(v) {} )
* value 为 数组中被遍历的每个值
*/ let b = arr.map( function(v) {
return v - 1
} ) console.log(b) //[2, 222, 3, 5, NaN, NaN] // 为什么会有 NaN 呢? 'a1' - 1 = NaN 可以思考下 /**
*
* filter()
* 功能: 将数组元素执行特定函数,而返回一个子集。
* filter( function(v) {} )
* value 为 数组中被遍历的每个值
*/ let f = arr.filter( function(v) {
return typeof v === 'number'
} )
console.log(f) //[3, 223, 4, 6] /**
*
* some() every()
* 功能: 对数组元素进行指定函数的逻辑判断 返回 true or false
* some( function(v) {} )
* value 为 数组中被遍历的每个值
*/ let s = arr.some( function(v) {
return v > 4
}) let s1 = arr.every( function(v) {
return v > 4
}) console.log(s,s1) // true false // 那么我们就可以 判断处, some方法, 是只要数组中有部分 值达到 指定函数的要求,那么久返回 true
// every 方法则是需要 数组中的每一个值必须 达到指定函数的方法。才会返回ture 否则 返回 falses /**
*
* reduce() reduceRight()
* 功能: 使用指定的函数将数组元素进行组合,生成单个值。
* reduce( function(pre,cur) {} )
* pre 为 数组中的前一个值, cur 为当前值
*/ let max = [1,2,33,12].reduce( function(pre, cur) {
return pre > cur ? pre : cur
}) let sum = [1,2,33,12].reduce( function(pre, cur) {
return pre + cur
}) let right = [1,2,33,12].reduceRight( function(pre, cur) {
return pre + ':' + cur
}) console.log(max, sum) // 33 48
console.log(right) // 12:33:2:1 // 用reduce 的方式来 获取道数组中的最大值。以及 数组数值求和 /**
*
* *************************华丽分割ES6扩展*************************
*
*/ /**
*
* Array.from()
* 功能:将两类对象转为真正的数组:类似数组的对象和可遍历的对象
*
* Array.from(arrayLike)
*/ let arrayLike = {
'0':'a',
'1':'b',
'2':'c',
length:3
}; let arr2 = Array.from(arrayLike)
console.log(arr2) // ["a", "b", "c"] /**
*
* Array.of()
* 功能:将一组值 转换成数组
*
* Array.of(1,223)
*/ let Numbers = '1,2,344,44'
let numArr = Array.of(Numbers)
console.log(numArr) // ["1,2,344,44"] /**
*
* copyWithin()
* 功能:在当前数组内部,将指定位置的成员复制到其他位置,返回当前数组
*
* copyWithin(replaceStartLoca, startIndex)
*/ let resArr = [1,2,222,2222,33].copyWithin(0, 3)
console.log(resArr) // [2222, 33, 222, 2222, 33] /**
*
* find()和findIndex()
* 功能:找到第一个符合条件的数组成员 并返回改 成员
*
* find(value, index, arr)
*/ let fs = [1,2,222,2222,33].find(function(value, index, arr) {
return value > 100
}) console.log(fs) // 222 /**
*
* entries()、keys()、values()
* 功能:用于遍历数组,可以用for…of循环进行遍历。
* 区别是keys()是对键名的遍历、values是对键值的遍历、entries()是对键值对的遍历
*
* for (let xxx of [],keys()) {}
*/ for (let index of [2,33,444,555].keys()) {
console.log(index) // 0 1 2 3
} // for (let elem of [2,33,444,555].values()) {
// console.log(elem) // 2,33,444,555
// } for (let [index, elem] of [2,33,444,555].entries()) {
console.log(index + '=>' + elem)
}
// 0=>2
// 1=>33
// 2=>444
// 3=>555 /**
*
* includes()
* 功能:表示某个数组是否包含给定的值
* includes(v, index)
* v 表示你需要查找的值,index 表示开始查找的开始索引,负数表示 从后往前数。
*
* 返回 布尔值
*
* 注意 这个和 indexOf 的区别, indexOf 无法识别 NaN 类型。 但是 includes 可以
*/ console.log([1,22,333,444,3].includes(1)) // true console.log([1,22,33,NaN].includes(NaN)) // ture console.log([1,22,33,NaN].indexOf(NaN)) // -1

JS 中 原生方法 (二) --- 数组 (修---添加ES6新增)的更多相关文章

  1. JS 中 原生方法 (四) --- Object

    Javascript 中 str. arr.date.obj 等常见的原生方法总结 本文也说主要阐释了 Javascript 中的基础类型和 引用类型的自带方法,那么熟悉的同学又可以绕道了 总是绕道, ...

  2. JS 中 原生方法 (一) --- 字符串

    目录 Javascript 中 str. arr.date.obj 等常见的原生方法总结 Javascript 中 str. arr.date.obj 等常见的原生方法总结 本文也说主要阐释了 Jav ...

  3. JS 中 原生方法 (三) --- Date 日期

    本文也说主要阐释了 Javascript 中的基础类型和 引用类型的自带方法,那么熟悉的同学又可以绕道了 总是绕道,真是羞耻悳boy 当然 本文阐述的主要类容 from MDN ( zh-cn ) D ...

  4. 原生JS中apply()方法的一个值得注意的用法

    今天在学习vue.js的render时,遇到需要重复构造多个同类型对象的问题,在这里发现原生JS中apply()方法的一个特殊的用法: var ary = Array.apply(null, { &q ...

  5. php中向前台js中传送一个二维数组

    在php中向前台js中传送一个二维数组,并在前台js接收获取其中值的全过程方法: (1),方法说明:现在后台将数组发送到前台 echo json_encode($result); 然后再在js页面中的 ...

  6. js中split()方法得到的数组长度

    js 中split(",")方法通过 ”,“ 分割字符串, 如果字符串中没有 “,” , 返回的是字符串本身 var str = “abc”://分隔符个数为0 var newSt ...

  7. 【转载】JS中bind方法与函数柯里化

    原生bind方法 不同于jQuery中的bind方法只是简单的绑定事件函数,原生js中bind()方法略复杂,该方法上在ES5中被引入,大概就是IE9+等现代浏览器都支持了(有关ES5各项特性的支持情 ...

  8. js中apply方法的使用

    js中apply方法的使用   1.对象的继承,一般的做法是复制:Object.extend prototype.js的实现方式是: Object.extend = function(destinat ...

  9. paip.编程语言方法重载实现的原理及python,php,js中实现方法重载

    paip.编程语言方法重载实现的原理及python,php,js中实现方法重载 有些语言,在方法的重载上,形式上不支持函数重载,但可以通过模拟实现.. 主要原理:根据参数个数进行重载,或者使用默认值 ...

随机推荐

  1. 自己制作一个USB自动挖矿器

    先讲下设备效果: 对面坐着一位同事中午去吃饭没锁屏幕,这时候你想用他的电脑去挖矿, 挖矿,当然不可能跑到他的座位上,关掉360然后下载个挖矿软件什么的.... 这时候你只需要花十块钱制作如下设备,然后 ...

  2. Python面向对象编程指南

    Python面向对象编程指南(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1SbD4gum4yGcUruH9icTPCQ 提取码:fzk5 复制这段内容后打开百度网 ...

  3. BZOJ1757 : Apple 偷苹果

    设$f0[i][j][x][y][S]$表示盗贼位于$(i,j)$,守卫位于$(x,y)$,每棵苹果树苹果数量为$S$,盗贼先手时盗贼还能偷多少苹果. 设$f1[i][j][x][y][S]$表示盗贼 ...

  4. PHP如何搭建百度Ueditor富文本编辑器

    本文为大家分享了PHP搭建百度Ueditor富文本编辑器的方法,供大家参考,具体内容如下 下载UEditor 官网:下载地址 将下载好的文件解压到thinkphp项目中,本文是解压到PUBLIC目录下 ...

  5. HBase MVCC 机制介绍

    关键词:MVCC HBase 一致性 本文最好结合源码进行阅读 什么是MVCC ? MVCC(MultiVersionConsistencyControl , 多版本控制协议),是一种通过数据的多版本 ...

  6. laravel-神奇的服务容器(转)

    原文地址: http://www.insp.top/learn-laravel-container ,转载务必保留来源,谢谢了! 容器,字面上理解就是装东西的东西.常见的变量.对象属性等都可以算是容器 ...

  7. centos 踩坑集锦

    定时任务 top 命令添加定时任务无效 我通过以下命令获取总进程数与僵尸进程数 vim procs.sh procs_total=`/bin/top -n 1|grep Tasks|sed 's/,/ ...

  8. PLC不能初始化问题

    检索COM 类工厂中 CLSID 为 <28e68f9a-8d75-11d1-8dc3-3c302a000000> 的组件时失败,原因是出现以下错误: 80040154 解决方案: Win ...

  9. 11、js 数组详细操作方法及解析合集

    js 数组详细操作方法及解析合集 前言 在开发中,数组的使用场景非常多,平日中也涉及到很多数组的api/相关操作,一直也没有对这块内容进行一块整理总结,很多时候就算用过几次这个api,在开发中也很容易 ...

  10. 接口自动化集成到jenkins(Java+testng+maven+git)

    一jenkins启动命令:jenkins 查看端口号: 1.lsof -i:端口号 2.netstat -tunlp|grep 端口号 二: 登录:http://localhost:8080 输入:u ...