重学js-可以操作数组的方法总结及一道经典面试题检验js基础

    技术2022-07-12  78

    //1, 判断是否为数组   isArray var arr = [1]; console.log(Array.isArray(arr));//true; //2, 数组已*拼接      join var arr = [1,2,3,4,5]; console.log(arr.join('+'));//1+2+3+4+5 //3, 向数组末尾添加元素,返回修改后数组的长度.改变原数组 push var arr = [1,2,3,4,5]; var len = arr.push(6,7); console.log(len); // 7 console.log(arr);//[1, 2, 3, 4, 5, 6,7] //4, 数组末尾移除最后一项,减少数组的 length 值,然后返回移除的项,改变原数组 pop var arr = [1,2,3,4,5]; var item = arr.pop(); console.log(item); // 5 console.log(arr);//[1, 2, 3, 4] //5, 删除数组的第一项,返回删除的项 ,改变原数组 shift() var arr = [1,2,3,4,5]; var item = arr.shift(); console.log(item); // 1 console.log(arr); // [2,3,4,5] //6, 向数组的开头添加元素,返回修改后的数组长度,改变原数组。unshift(); var arr = [1,2,3,4,5]; var len = arr.unshift(-1,0); console.log(len); // 7 console.log(arr);// [-1, 0, 1, 2, 3, 4, 5] //7, 数组排序 sort(); 改变原数组 var arr = [1,6,12,23,3]; var arr1 = [1,6,12,23,3]; console.log(arr.sort());// [1, 12, 23, 3, 6] console.log(arr); // [1, 12, 23, 3, 6]     // 如果需要按数字大小排序需,传参一个方法     function compare(v1,v2){         if(v1 > v2){             return 1;         }else if(v1 < v2){             return -1;         }else{             return 0;         }     }     console.log(arr1.sort(compare));// [1, 3, 6, 12, 23]     console.log(arr1);// [1, 3, 6, 12, 23] //8, 反转数组项的顺序    reverse():改变原数组 var arr = [1,6,12,23,3]; console.log(arr.reverse()); //[3, 23, 12, 6, 1] console.log(arr); //[3, 23, 12, 6, 1](原数组改变) //9, 数组拼接 concat()。原数组不改变。 var arr = [1,2]; var arr1 = [3,4,'5',6]; var arr2 = arr.concat(arr1); console.log(arr);//[1, 2]     console.log(arr1);//[3, 4, "5", 6] console.log(arr2);//[1, 2, 3, 4, "5", 6] //10, 从数组中选取 从 start 到 end 的元素组合成的新数组。不改变原数组。slice var arr = [1,3,5,7,9,11]; // 传一个参数,就是从下表为n到length-1 var arr1 = arr.slice(1); // 传两个正数参数,就是从start到end,但是不包括end。 var arr2 = arr.slice(1,4); // 如果传参结尾为负数,用end+数组长度来替换,即-2+6 = 4 var arr3 = arr.slice(1,-2); //  arr.slice(1,4) // 如果传参都为为负数,全加长度来替换 var arr4 = arr.slice(-4,-1);//  arr.slice(2,5) console.log(arr); //[1, 3, 5, 7, 9, 11](原数组没变) console.log(arr1); //[3, 5, 7, 9, 11] console.log(arr2); //[3, 5, 7] console.log(arr3); //[3, 5, 7] console.log(arr4); //[5, 7, 9]  //11, 实现删除、插入和替换 splice() 改变原数组 var arr = [1,3,5,7,9,11]; //删除:可以删除任意数量的项,只需指定 2 个参数:要删除的第一项的位置和要删除的项数。例如, arr.splice(0,2)会删除数组中的前两项。 arr.splice(0,2); console.log(arr);//[5, 7, 9, 11] //插入:可以向指定位置插入任意数量的项,只需提供 3 个参数: //起始位置、 0(要删除的项数)和要插入的项。例如,arr.splice(2,0,4,6)会从当前数组的位置 2 开始插入4和6。 arr.splice(2,0,4,6); console.log(arr);//[5, 7, 4, 6, 9, 11] //替换:可以向指定位置插入任意数量的项,且同时删除任意数量的项,只需指定 3 个参数: //起始位置、要删除的项数和要插入的任意数量的项。插入的项数不必与删除的项数相等。 //例如,arr.splice (2,1,4,6)会删除当前数组位置 2 的项,然后再从位置 2 开始插入4和6。 arr.splice (2,1,4,6); console.log(arr); //12, 在数组中查找元素 indexOf()和 lastIndexOf();两个参数,第一参数是查找的项,第二个参数查找索引起始位置。 var arr = [1,3,5,7,9,11]; console.log(arr.indexOf(5));// 2 console.log(arr.indexOf(5,3)); // -1 console.log(arr.lastIndexOf(5)); // 2 console.log(arr.lastIndexOf(5,3));//2 console.log(arr.lastIndexOf(11,3));// -1 //13, 循环遍历forEach() var arr = [1,3,5,7,9,11]; var newArr = []; arr.forEach(item=>{     newArr.push(item*2); }); console.log(arr);//[1, 3, 5, 7, 9, 11] console.log(newArr);//[2, 6, 10, 14, 18, 22] //14, 对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组 map() var arr = [1,3,5,7,9,11]; var arr2 = arr.map((item,index)=>{     return item+=2 }); console.log(arr2);//[3, 5, 7, 9, 11, 13] //15, 过滤 ,数组中的每一项运行给定函数,返回满足过滤条件组成的数组 filter() var arr = [1,3,5,7,9,11]; var arr2 = arr.filter((item,index)=>{     return item%3 == 0 }); console.log(arr2);//[3, 9] //16, 判断数组中每一项都是否满足条件,只有所有项都满足条件,才会返回true。 every(): var arr = [1,3,5,7,9,11]; var tOrf = arr.every(item=>{     return item > 2 }); var tOrf1 = arr.every(item=>{     return item < 12 }); console.log(tOrf);//false console.log(tOrf1);// true //17, 判断数组中是否存在满足条件的项,只要有一项满足条件,就会返回true .some(): var arr = [1,3,5,7,9,11]; var tOrf = arr.some(item=>{     return item > 10 }); var tOrf1 = arr.some(item=>{     return item < 0 }); console.log(tOrf);// true console.log(tOrf1);// false //18, 迭代数组的所有项,然后构建一个最终返回的值。reduce()和 reduceRight() //两个参数:一个在每一项上调用的函数和(可选的)作为归并基础的初始值 //第一个参数函数的参数为四个:1.必需,初始值, 或者计算结束后的返回值;2.必需,当前元素;3.可选,当前元素的索引;4.可选,当前元素所属的数组对象。 var arr = [1,3,5]; var sum = arr.reduce((total,currentValue,currentIndex,arr)=>{     return total+currentValue },2); var sum1 = arr.reduceRight((total,currentValue,currentIndex,arr)=>{     return total+currentValue },2); console.log(sum);// 11 console.log(sum1);// 11 //19, 数组展开运算符... var arr = [2, 3, 4]; var arr2 = [1, ...arr, 5] console.log(arr);// [2, 3, 4] console.log(arr2);// [1, 2, 3, 4, 5] //20, 数组去重 set var arr = [2, 3, 4, 5, 5, 4, 3, 2, 1]; var arr2 =[...new Set(arr)]; console.log(arr2);//[2, 3, 4, 5, 1] var arr1 = [ {name:'a',age:1}, {name:'aa',age:2}, {name:'aaa',age:3}, {name:'a',age:1}, {name:'aa',age:2} ]; var obj = {}; var newArr = arr1.reduce((total,current)=>{     obj[current.name]?"":obj[current.name] = true && total.push(current);     return total; },[]); console.log(newArr);//[{name:'a',age:1},{name:'aa',age:2},{name:'aaa',age:3}] //21, 对象遍历 var obj = {name:'kb',age:40,team:'lakers',num:24} var keyList = Object.keys(obj); console.log(keyList);//["name", "age", "team", "num"] //22,一道检验js基础的面试题 //获取一个网站出现所有html标签种类,并打印出出现次数最多的3个 /* * 1、获取网站所有html元素 *     document.getElementsByTagName('*') *     标签上带有选择器 做以下处理 * 2、获取了所有出现的html标签 *     [...document.getElementsByTagName('*')].map(item=>item.nodeName) *    document.getElementsByTagName('*')获取到的是非数组,所以需要...将其转化成数组,再使用map的方法。这就 * 3、计算每个标签出现的次数 *     [...document.getElementsByTagName('*')].map(item=>item.nodeName).reduce((obj,el)=>{          obj[el] = obj[el]?obj[el]+1:1          return obj;      },{}) * 4、将对象转换成数组 *     var elListArr = Object.entries([...document.getElementsByTagName('*')].map(item=>item.nodeName).reduce((obj,el)=>{          obj[el] = obj[el]?obj[el]+1:1          return obj;     },{})) * 5、数组排序 *    elListArr。sort(a,b=>b[1]-a[1]); * 6、选取前三个 *    iWantList = elListArr.slice(0,3); *    console.table(iWantList); * */ var elListArr = Object.entries([...document.getElementsByTagName('*')].map(item=>item.nodeName).reduce((obj,el)=>{     obj[el] = obj[el]?obj[el]+1:1     return obj; },{})); elListArr.sort((a,b)=>b[1]-a[1]); var iWantList = elListArr.slice(0,3); console.table(iWantList);//见下表

    本页面出现次数最多的3个html标签 0span1481div1402link121

                                                     

    Processed: 0.014, SQL: 9