检测是否是数组
function judgeArr(arr){
if(Array.isArray(arr)){
return true;
}
}
数组去重set方法
function changeReArr(arr){
return Array.from(new Set([1,2,2,3,5,4,5]))
}
或者
function changeReArr(arr){
return [...new Set([1,2,2,3,5,4,5])]
}
数组排序
let arr = [1,4,3,6,2,0,7]
arr.sort((a,b)=>{
return a-b
})
let obj = [{id:1},{id:4},{id:8},{id:2}]
obj.sort((a,b)=>{
return a.id - b.id;
})
数组中的最大值
function max(arr){
return Math.max(...arr)
}
function max1(arr){
return Math.max.apply(null,arr)
}
数组的every和some
function allTrueArr(arrs){
return arr.every((arr)=>{
return arr>-1;
})
}
function OneTrueArr(arrs){
return arr.some((arr)=>{
return arr>0;
})
}
filter
function filterArr(arr, operator, judgeVal){
return arr.filter(item => {
if (operator == '>') {
return item > judgeVal;
} else if (operator == '<') {
return item < judgeVal;
} else if (operator == '==') {
return item == judgeVal;
}
})
}
map
function mapArr(arr){
return arr.map(item => item + 10)
}
entries()
var fruits = ["Banana", "Orange", "Apple", "Mango"];
let x = fruits.entries();
x.next().value
x.next().value
x.next().value
x.next().value
copyWithin()
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.copyWithin(2, 0);
fruits 输出结果:
Banana,Orange,Banana,Orange
find()
var ages = [3, 10, 18, 20];
function checkAdult(age) {
return age >= 18;
}
function myFunction() {
document.getElementById("demo").innerHTML = ages.find(checkAdult);
}
findIndex()
var ages = [3, 10, 18, 20];
function checkAdult(age) {
return age >= 18;
}
function myFunction() {
document.getElementById("demo").innerHTML = ages.findIndex(checkAdult);
}
fill() 将一个固定值替换数组的元素,填充数组
var newArray = new Array(10).fill(“1”);
console.log(newArray);
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.fill("Runoob");
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.fill("Runoob", 2, 4);
from()
var setObj = new Set(["a", "b", "c"]);
var objArr = Array.from(setObj);
objArr[1] == "b";
var arr = Array.from([1, 2, 3], x => x * 10);
includes
[1, 2, 3].includes(2);
[1, 2, 3].includes(4);
[1, 2, 3].includes(3, 3);
[1, 2, 3].includes(3, -1);
[1, 2, NaN].includes(NaN);
indexOf 找出元素item在给定数组arr中的位置
function indexOf(arr, item) {
if(Array.prototype.indexOf){
return arr.indexOf(item);
}else{
for(var i=0;i<arr.length;i++){
if(arr[i]===item){
return i;
}
}
}
return -1;
}
function indexOf(arr, item) {
if(Array.prototype.indexOf){
return arr.indexOf(item);
} else if (arr.indexOf(item) > 0) {
return arr.indexOf(item)
}else{
return -1
}
}
lastIndexOf()
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var a = fruits.lastIndexOf("Apple");
pop()删除数组的最后一个元素
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.pop();
shift()把数组的第一个元素从其中删除
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.shift()
在数组arr末尾添加元素item,不直接修改数组arr,结果返回新的数组
function append(arr, item) {
let resArr = []
for(let i = 0;i<arr.length;i++){
resArr.push(arr[i])
}
resArr.push(item)
return resArr
}
function append(arr, item) {
return arr.concat(item);
}
function append(arr, item) {
let newArr = arr.slice(0);
newArr.push(item);
return newArr;
}
function append(arr, item) {
let resArr = [...arr,item]
return resArr
}
移除数组arr中的所有值与item相等,直接在给定的arr数组上进行性操作
function removeWithoutCopy(arr, item) {
for(let i=arr.length;i>=0;i--){
if(arr[i]==item){
arr.splice(i,1);
}
}
return arr;
}
function removeWithoutCopy(arr, item) {
for(let i = 0; i< arr.length; i++) {
if(arr[i]===item) {
arr.splice(i,1);
i--;
}
}
return arr;
}
移除数组arr中的所有值与item相等,不直接修改数组arr,返回新数组
function remove(arr, item) {
return arr.filter(res =>{
return res != item;
})
}
function remove(arr, item) {
let resArr = []
for(let i = 0;i<arr.length;i++){
if(arr[i]!== item){
resArr.push(arr[i])
}
}
return resArr
}
function remove(arr, item) {
let resArr=[];
arr.forEach(v=>{
if(v!==item){
resArr.push(v);
}
})
return resArr;
}
function remove(arr,item){
let resArr= arr.slice(0);
for(let i=0;i<resArr.length;i++){
if(resArr[i] == item){
resArr.splice(i,1);
i--;
}
}
return resArr;
}
计算给定数组arr中所有元素的总和
function sum(arr) {
let res = 0
for(let i=0;i<=arr.length;i++){
res +=arr[i]
}
return res
}
function sum(arr) {
let res = 0
arr.forEach((value,index,array)=>{
array[index] == value;
res+=value;
});
return res;
};
function sum(arr) {
return arr.reduce((pre,cur)=>{
return pre+cur;
})
}
function sum(arr) {
return eval(arr.join("+"));
}
删除数组最后一个元素
function truncate(arr) {
return arr.slice(0,arr.length-1)
}
function truncate(arr) {
let resArr = arr.concat()
resArr.pop()
return resArr
}
合并数组,返回新数组
function concat(arr1, arr2) {
let resArr = arr1.concat(arr2)
return resArr
}
function concat(arr1, arr2) {
let resArr = [...arr1,...arr2]
return resArr
}
function concat(arr1, arr2) {
let resArr = arr1.slice(0);
[].push.apply(resArr,arr2);
return resArr;
}
在数组指定位置添加元素,返回新数组
function insert(arr, item, index) {
let resArr = arr.slice(0,index)
resArr.push(item)
resArr = resArr.concat(arr.slice(index))
return resArr
}
function insert(arr, item, index) {
let resArr = arr.slice(0);
resArr.splice(index,0,item);
return resArr;
}
function insert(arr, item, index) {
let resArr=[];
[].push.apply(resArr, arr);
resArr.splice(index,0,item);
return resArr;
}
统计数组中item元素出现的次数
function count(arr, item) {
let reSCount = 0
for(let i = 0;i<=arr.length;i++){
if(arr[i] === item){
reSCount++
}
}
return reSCount
}
function count(arr, item) {
let resCount=0;
arr.forEach(v => {
if(v==item){
resCount++;
}
});
return resCount;
}
function count(arr, item) {
let res = arr.filter(v => {
return v === item
});
return res.length;
}
function count(arr, item) {
let resCount = 0
arr.map(v => {
if(v === item){
resCount++
}
});
return resCount;
}
function count(arr, item) {
let res = arr.reduce( (init,curr)=> {
return curr === item ? init+1:init;
},0)
return res;
}
查找重复的元素
function duplicates(arr) {
let resArr = [];
arr.sort();
for(let i=0;i<arr.length;i++){
if(arr[i]==arr[i-1] && resArr.indexOf(arr[i])==-1){
resArr.push(arr[i]);
}
}
return resArr;
}
function duplicates(arr) {
let resArr = [];
arr.sort();
for(i in arr){
if(arr[i]==arr[i-1] && resArr.indexOf(arr[i])==-1){
resArr.push(arr[i]);
}
}
return resArr;
}
function duplicates(arr) {
var resArr=[];
arr.forEach(v => {
if(arr.indexOf(v) !=arr.lastIndexOf(v) && resArr.indexOf(v) == -1){
resArr.push(v);
}
});
return resArr;
}
function duplicates(arr) {
let b = [];
let resArr = [];
for (let i= 0; i<arr.length; i++){
b[i] = arr.reduce( (init,curr)=> {
return curr === arr[i] ? init+1:init;
},0)
if (b[i] > 1 && resArr.indexOf(arr[i]) === -1){
resArr.push(arr[i]);
}
}
return resArr;
}
数组交集
var numOne = [0, 2, 4, 6, 8, 8];
var numTwo = [1, 2, 3, 4, 5, 6];
var duplicatedValues = […new Set(numOne)].filter(item => numTwo.includes(item));
console.log(duplicatedValues);
去除假值
var mixedArr = [0, “blue”, “”, NaN, 9, true, undefined, “white”, false];
var trueArr = mixedArr.filter(Boolean);
console.log(trueArr);
分割指定长度的数组
const listChunk = (list,size=1,cacheList=[])=>{
const tmp = [...list]
if(size <= 0) return cacheList
while (tmp.length){
cacheList.push(tmp.splice(0,size))
}
return cacheList;
}