let array = [ { id: 5, name: "jk" }, { id: 2, name: "jc" }, { id: 3, name: "jg" }, { id: 4, name: "jp" }, { id: 1, name: "jq" }, { id: 6, name: "jr" } ] console.log(array.slice(0, 3)) //[ { id: 5, name: 'jk' },{ id: 2, name: 'jc' },{ id: 3, name: 'jg' } ] //字符串 let str = 'this1 is slice' console.log(str.slice(0,5))//this1
截取元素用的,但是原数组不会改变!
07、Array.prototype.splice()
splice() 方法用于添加、移除、删除数组的元素,修改后的元素以数组形式返回。
第一个参数为修改开始的位置
第二个参数为删除的个数
第三个参数为插入的参数
粟子:
let array = [ { id: 5, name: "jk" }, { id: 2, name: "jc" }, { id: 3, name: "jg" }, { id: 4, name: "jp" }, { id: 1, name: "jq" }, { id: 6, name: "jr" } ]; let arr = {id: 7, name: 'yy'} console.log(array.splice(1,1, arr));//[ { id: 2, name: 'jc' } ] console.log(array);// [ { id: 5, name: 'jk' },{ id: 7, name: 'yy' }, { id: 3, name: 'jg' }, { id: 4, name: 'jp' },{ id: 1, name: 'jq' },{ id: 6, name: 'jr' } ]
splice() 方法直接返回修改的内容,第一个log返回的就是删除的元素,如果第二参数为0或者为负数的时候则会返回一个空的数组,第二个log是改变后的数组。该方法会将原数组修改!
08、Array.prototype.shift()
shift() 方法会将数组的第一个元素进行删除,然后返回删除的元素(如果数组为空将会返回undefined),该方法会修改数组的长度 粟子:
let array = [ { id: 5, name: "jk" }, { id: 2, name: "jc" }, { id: 3, name: "jg" }, { id: 4, name: "jp" }, { id: 1, name: "jq" }, { id: 6, name: "jr" } ] console.log(1,array.shift())//1 { id: 5, name: 'jk' } console.log(2,array)//2 [ { id: 2, name: 'jc' },{ id: 3, name: 'jg' },{ id: 4, name: 'jp' },{ id: 1, name: 'jq' },{ id: 6, name: 'jr' } ]
09、Array.prototype.unshift()
unshift() 该方法则是在数组的开头添加一个或者多个元素
粟子:
let array = [ { id: 5, name: "jk" }, { id: 2, name: "jc" }, { id: 3, name: "jg" }, { id: 4, name: "jp" }, { id: 1, name: "jq" }, { id: 6, name: "jr" } ] let arr = { id: 2, name: 'yy' } console.log(1,array.unshift(arr))//7 console.log(2,array)//2 [ { id: 2, name: 'yy' },{ id: 5, name: 'jk' },{ id: 2, name: 'jc' },{ id: 3, name: 'jg' }{ id: 4, name: 'jp' },{ id: 1, name: 'jq' },{ id: 6, name: 'jr' } ]
10、Array.prototype.reverse()
reverse() 方法用翻转数组元素的位置,然后返回该数组
let arr = [1,2,3,4,5] console.log(arr.reverse())//[5,4,3,2,1]
11、Array.prototype.indexOf()
indexOf() 方法用于给定的元素然后从数组开头查找数组,如果存在则返回该元素存在数组的下标,不存在则返回-1
简单的粟子:
let array = [1,2,3,4,5,6,7,8,9] console.log(array.indexOf(3))//2
第二个粟子:(简单的去重)
let array = [1,2,3,4,5,1,2,6,8,3,8,9] function arr(arr) { if(arr.length === 0 ) return let n = []; for(let i = 0; i<arr.length; i++) { if(n.indexOf(arr[i]) === -1) { n.push(arr[i]) } } return n } console.log(arr(array))//[ 1, 2, 3, 4, 5, 6, 8, 9 ]
12、Array.prototype.lastIndexOf()
lastIndexOf() 方法从数组的末端开始按给定的元素进行查找,查找到则返回所在的下标,不存在则返回-1;
粟子:
var arr1 = [1,2,3,4,5] console.log(arr1.lastIndexOf(3))//2
迭代
1、Array.prototype.forEach()
forEach() 方法对数组中的每个元素执行一次所写的回调函数(注意,一旦开始循环中途无法跳出循环)
回调函数接收三个参数
数组当前项值
数组当前项的下标
当前数组 简单的粟子:
var words = ['one', 'two', 'three', 'four']; words.forEach((item, index) =>{ if(item === 'two') { words.splice(index, 1) } }); console.log(words)//[ 'one', 'three', 'four' ]
2、Array.prototype.map()
map() 方法会将该方法迭代后返回的新数组
简单的粟子:
let arr = [1,2,3,4,5,6] let arrs = arr.map(item => item + 10) console.log(arrs)//[ 11, 12, 13, 14, 15, 16 ]
经典的粟子:
let a = [1,2,3].map(parseInt) a?
a等于多少呢,有的答案可能是123,有的答案又可能是别的,而且这是一个经典的面试题,是不是刚刚看的时候觉得特别简单一下子就给出了答案了呢!