本地网站搭建如何访问网页,网站交互主要做什么的,wordpress高端企业主题,工信部的网站备案信息unshift、push、shift、pop 这4个方法都会改变原数组unshift() 从前面添加元素#xff0c;push() 从后面追加元素#xff0c;返回数组长度shift() 删除第0个元素#xff0c;pop() 删除最后一个元素#xff0c;返回被删除的元素slice 不改变原数组slice(m, n)返回原数组索引… unshift、push、shift、pop 这4个方法都会改变原数组unshift() 从前面添加元素push() 从后面追加元素返回数组长度shift() 删除第0个元素pop() 删除最后一个元素返回被删除的元素slice 不改变原数组slice(m, n)返回原数组索引m包含到n不包含的元素数组。不传参数默认全部截取只传一个参数从该位置截取到末位。类似于String.prototype.substringlet arr [1,2,3,4,5]
console.log(arr.slice()); // [ 1, 2, 3, 4, 5 ]
console.log(arr.slice(1)); // [ 2, 3, 4, 5 ]
console.log(arr.slice(2,4)); // [ 3, 4 ]
console.log(arr); // [1,2,3,4,5] splice 改变原数组。splice(m,n,e1,e2,e3) 从索引m包括到n不包括的元素删除数组再在该位置处添加e1e2e3。若n传入0则只增加若只传m和n则只删除若只传m则从m位置删除到末位。放回删除元素数组let arr [1,2,3,4,5];
console.log(arr.splice(2), arr); // [ 3, 4, 5 ] [ 1, 2 ]
console.log(arr.splice(0,1,2), arr); // [ 1 ] [ 2, 2, 3, 4, 5 ] concat 拼接不改变原数组let arr [1,2,3], arr1 [4];
console.log(arr.concat(arr1, 5), arr); // [ 1, 2, 3, 4, 5, ] [ 1, 2, 3 ]
console.log([...arr, ...arr1, 5]); // [ 1, 2, 3, 4, 5 ] 对象也可以这样拼接但重复的会覆盖相当与 Object.assign of 和 from of()类似于new Array()但后者如果传入一个参数则是设置数组长度。from() 把伪数组转换为真数组类似于[].slice.call()或者写成Array.prototype.slice.call()伪数组有DOM集、arguments、{0: zero, 1: one, length: 2}Array.of(1,2,3,4); // [ 1, 2, 3, 4 ]
Array.from({0: zero, 1: one, length: 2}); // [ zero, one ] 判断数组的方法有 xx instanceof ArrayArray.isArray()Object.prototype.toString.call() [object Array]这里补充一点判断类型的技巧 typeof操作符可以判断出number、boolean、string、function和undefined而不能判断处具体的Object类型。 判断Array要使用Array.isArray(arr)判断null请使用myVar null判断某个全局变量是否存在用typeof window.myVar undefined函数内部判断某个变量是否存在用typeof myVar undefined不必把任意类型转换为boolean再判断因为可以直接写if (myVar) {...}如果需要转换可以用 !!myVar 不要使用new Number()、new Boolean()、new String() 创建包装对象用parseInt()或parseFloat()来转换任意类型为Number用String()来转换任意类型为String或者直接调用某个对象的toString()方法indexOf 和 includes indexOf() 返回索引不存在就返回 -1。inclues()返回布尔值。NaN 不能通过indexOf()判断它是通过“”比较的。arr [1, 2, null, NaN];
arr.indexOf(NaN); // -1
arr.includes(NaN); // true filter、find 和 findIndex filter() 返回数组。find() 返回值不存在就返回 undefined。 findIndex() 返回第一个匹配到的索引不存在就返回 -1。// let arr [1, 2, null, NaN];
// arr.filter(item typeof item number); // [1, NaN]
// arr.find(item typeof item number); // 1
// arr.findIndex(item typeof item number); // 0 some 和 every 返回布尔值some()用于检测数组中的元素是否有满足指定条件的every()用于检测数组中所有元素是否都符合指定条件。不对空数组进行检测不改变原数组let arr [Array(), [], {}, null]
let res1 arr.some((item, index, arr) {return Object.prototype.toString.call(item) [object Array]
})
let res2 arr.every((item, index, arr) {return Object.prototype.toString.call(item) [object Array]
})
console.log(res1,res2); // true false map 和 forEach map() 对数组中的每个元素进行处理得到新的数组不改变原数组forEach() 相当于 for 循环返回 undefined不改变原数组let res [0,1,2,3,4].map((item, idx) item * idx); // [ 0, 1, 4, 9, 16 ] reduce reduce((accumulator, currentValue, currentIndex, array){}, initValue)第一个参数是迭代器函数函数的作用是对数组中从左到右的每一个元素进行处理。第二个可选参数是累加器的初始值。没有时累加器第一次的值为currentValue。accumulator 累加器即函数上一次调用的返回值。第一次的时候为 initialValue || arr[0]currentValue 数组中函数正在处理的的值第一次的时候是 initialValue || arr[1]currentIndex 数组中函数正在处理的的索引array 函数调用的数组console.log([1,2,3].reduce((a,b,c,d){console.log(a,b,c,d);return ab; // 下一次的a}, 4)
); // 10
/* 4 1 0 [ 1, 2, 3 ]5 2 1 [ 1, 2, 3 ]7 3 2 [ 1, 2, 3 ]
*/ 当然累乘或者做其他业务也是可以的。