arr

js中Array方法归类解析

拟墨画扇 提交于 2019-12-06 10:25:31
为什么要对 Array 方法进行归类解析 因为它常用,而且面试必问 改变原数组的方法 pop 删除并返回数组最后一个元素 push 从末尾给数组添加元素,返回新数组length值 reverse 颠倒数组元素,返回颠倒后的数组 shift 删除并返回第一个元素值 sort 数组排序 splice 删除指定位置开始指定长度的元素,返回被删除的项目。 unshift 向数组开头添加多个元素,返回新数组长度 不改变原数组 concat 返回合并后数组的副本 join 返回一个通过连接符连接数组元素的字符串 slice 返回选中元素的新数组 toString 返回字符串等同于join() 如何循环一次删除多个元素并改变数组长度 for (var i = arr.length - 1; i >= 0; i--){ if(arr[i] === 1){ arr.splice(i,1) } } 操作Array元素的callback的方法集合 forEach、map、filter、every、some、reduce、reduceRight forEach对元素上执行callback的操作 var a = ['1', 20, 30]; a.forEach((item, index, a)=>{ ++item }) // 不会改变a值 a.forEach((item, index)=>{ a[index

数组的遍历方法

橙三吉。 提交于 2019-12-06 08:57:07
以...为例 let arr = [1,2,3,4] let Arr = [ {id: 0, name: '小明' }, {id: 1, name: '小白' }, {id: 2, name: '小红' }, {id: 3, name: '小新' } ] for for (let i = 0; i < 6; i++) { } for in 遍历数组索引 for (i in arr) { console.log(i); }// 0、1、2、3 for of   遍历数组元素值 for (v in arr) { console.log(i); } // 1、2、3、4 forEach 遍历数组中的每一项,没有返回值,对原数组没有影响 arr.forEach((value,index,arr) => { }); value 必需,当前元素 index 可选,当前元素的索引值 arr 可选,当前元素所属的数组对象 indexOf 返回某个指定的值在数组中首次出现的位置 arr.indexOf(value,fromindex) value 必需,规定需检索的字符串值。 fromindex 可选的整数参数,规定在字符串中开始检索的位置 lastIndexOf 返回某个指定的值在数组中最后出现的位置,用法同 indexOf find 返回一个符合条件的数组第一个元素值 常用语法: arr

数组

馋奶兔 提交于 2019-12-06 07:03:11
1.map-映射(一个对一个) let arr = [12,58,99,86,45,91]; let result = arr.map(function(item){ // alert(item) return item*2 }); //let result = arr.map(item=>item*2); alert(result) View Code 2.reduce-汇总(一堆出来一个) 算个总数 [12,12,12]=>36 let arr = [12,58,99,86,45,91]; let result = arr.reduce(function(tmp,item,index){ //tmp 上一次的运算结果 第一次 //item 当前的数 //index 下标 return tmp +item }) console.log(result) 算个平均数 [12,12,12]=>12        let arr = [12,58]; let result = arr.reduce((tmp,item,index)=>{ //tmp 上一次的运算结果 第一次 //item 当前的数 //index 下标 if(index!=arr.length-1){ return tmp+item }else{ return(tmp+item)/arr.length } //

ES6变量的解构赋值(一)数组的解构赋值

我是研究僧i 提交于 2019-12-06 06:56:44
let[a,...arr]=[1,2,3,4];//a==>1 arr==>[2,3,4] let [x, y, ...z] = ['a'];//a==>'a' y==>undefined z==> [] let [a, [b], d] = [1, [2, 3], 4];//a==>1 b==>2 c==>4 let[a,b]=[1,2,3];//a==>1 b==>2 数组中变量左右两边一对一对应: let[a,b,c]=[1,2,3];//a==>1 b==>2 c==>3 let[a,[[b],c]]=[1,[[2],3]];//a==>1 b==>2 c==>3 变量左边数量低于右边 let[a,b,]=[1,2,3];//a==>1 b==>2let[a,,c]=[1,2,3];//a==>1 c==>3let [a, [b], d] = [1, [2, 3], 4];//a==>1 b==>2 c==>4 左边数量多于右边数量,匹配不到数值变量均为undefined let[a,b,c]=[1,,3];//a==>1 b==>undefined c==>3 特殊:arr为数组 let[a,...arr]=[1,2,3,4];//a==>1 arr==>[2,3,4]let[a,...arr]=[1,];//a=>1 arr=>[] 同时解构赋值可以使用默认值 注

javascript map()

蹲街弑〆低调 提交于 2019-12-06 06:53:38
let arr = [1,2,3] let newArr = arr.map((item, i, arr) => { //item:遍历数组的每一项,i:数组当前项的下标,arr原数组 console.log(`item:${item}, i:${i}, arr:${arr}`) return item + 1 }) console.log(newArr) //[4,5,6] map的特点:不会对空数组进行遍历,不会改变原数组,map()参数必须是函数 来源: https://www.cnblogs.com/gehaoyu/p/11966922.html

数组 slice方法和splice方法的区别

余生长醉 提交于 2019-12-06 05:50:40
一、slice() 方法 slice()方法可以从已有的数组中返回选定的元素。 语法: arrayObject.slice(start,end) 参数: start: (截取开始位置的索引,包含开始索引)必须,规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。(-1指的是最后一个元素,-2指倒数第二个元素,以此类推)。 end: (截取结束位置的索引,不包含结束索引)可选,规定从何处结束选取。该参数是数组片段结束处的数组下标,如果没有指定该参数,那么切分的数组包含从 start(开始处)到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。 返回值: 返回一个新的数组,包含从 start 到 end(不包含end的这个元素)的数组对象(arrayObject)中的元素。 注意 : 1、slice 方法并不会修改数组,而是会返回一个子数组。如果想删除一段元素,应该使用方法Array.splice() 2、可以使用负值从尾部选取元素。 3、如果 end未被规定,那么 slice() 方法会选取从 start到数组结尾的所有元素。 实例: 使用slice() 方法选取已有数组中的元素 var arr=["大雪","小雪","霜降","立冬"] console.log(arr.slice(1,3)); console.log(arr.slice

JS对象

半腔热情 提交于 2019-12-06 05:41:25
1. 数组   (1)数组作用:存储一组有序的数据   (2)定义方式:代码中定义数组的语法     1. 使用构造函数定义       var arr = new Array();  //定义一个空数组       var arr = new Array(5);  //定义一个长度为5的数组(只有5个元素的数组,每个元素值为undefined)       var arr = new Array(1,23,354,77);  //定义一个有多个元素的数组     2. 使用字面量方式定义:       var arr = [];  //定义一个空数组       var arr = [1,3,4,"aa"];       注意:在js中只有索引数组,没有关联数组    (3)常用方法: 来源: https://www.cnblogs.com/fanshehu/p/11964413.html

数组去重等数组实例

帅比萌擦擦* 提交于 2019-12-06 05:33:08
一、删除指定的数组元素 要求: 将数组 [2,0,45,3,9,0,47,0] 中的 0去掉,然后形成一个不包含 0的新数组; 实现思路: 1、需要一个新数组用于存放筛选之后的数据。 2、遍历原来的数组,把不是 0的数据添加到新数组里面(此时要注意采用 数组名+索引名 的格式接收数据) 3、新数组里面的个数,使用length 不断累加; var arr= [2,0,45,3,9,0,47,0]; var newArr = []; for(var i=0,j=0;i<arr.length;i++){ if(arr[i]!=0){ //新数组应该从 0开始,依次递增 newArr[newArr.length] =arr[i]; } } console.log(newArr); 二、数组去重 要求 :删除数组 [1,2,3,4,2,1,4,5,6] 中的重复的元素。 实现思路: 1、首先获取数组中的每一个元素 2、 从当前元素的下一个元素进行比较 3、运用条件判断判断两个循环获取的元素是否相等; 4、 如果相等则证明出现了重复的元素,就删除aa对应的元素。 5、当删除了aa所对应的元素,后面的元素会自动补上一位,此时就不会比较当前的元素,因此需要再比较一次aa所在位置的元素。 为了达到这个效果就需要对 aa自减(aa--),需要写在内部的for循环里面,删除了一个元素之后才aa--;

1.2题解:如何找数组中唯一成对的那个数(位运算)

ぐ巨炮叔叔 提交于 2019-12-06 05:33:04
&(与)两边都为1则结果为1,否则为0 0&0 = 0,0&1 = 0,1&0 = 0, 1&1 = 1 |(或)两边都为0则结果为0,否则为1 0|0 = 0,0|1 = 1,1|0 = 1,1|1 = 1 ~(非/取反) 取反加1 ^(异或)只有一边为1结果才为1,否则为0 0^0 = 0,0^1 = 1,1^0 = 1,1^1 = 0 <<(左移乘2n) 11<<n  结果为11*(n*2) >>(右移除2n) 44>>n  结果为44/(n*2) %(取余) 3%2 余 1,2%3 余 2 /(取整) 3/2 商 1,2/3 商 0 1 public class One_2如何找数组中唯一成对的那个数 { 2 public static void main(String[] args) { 3 int N = 11; 4 int[] arr = new int[N]; 5 for (int i = 0; i < N-1; i++){ 6 arr[i] = i+1; 7 } 8 9 //最后一个数,是随机数(长度为11的数组,最后一个元素下标应该为10) 10 arr[arr.length-1] = new Random().nextInt(N)+1;//Random().nextInt()会产生一个0到指定数N的随机数不包含N,+1代表从1到指定数字 11 //随即下标0

冒泡排序和选择排序

﹥>﹥吖頭↗ 提交于 2019-12-06 05:04:34
1、冒泡排序 依次对数组中相邻数字进行比较(两两比较),大的放后面 var arr = [5,99,2,9,1,5,67]      //定义一个杂乱的数组 for(var i=0;i<arr.length-1;i++){ //大循环,用于遍历数组每个元素 for(var j=0;j<arr.length-i-1;j++){ //小循环,用于将数组中的某个元素与其它所有元素相比较 var sum; //声明一个局部变量,当作第三个空瓶子 if(arr[j]>arr[j+1]){ //判断当前元素和后一个元素的大小,如果当前元素比后一个元素大 sum = arr[j+1]; //将后一个元素(小元素)放在空瓶子里 arr[j+1] = arr[j]; //将当前元素(大元素)放在后一个元素的位置 arr[j] = sum; //将小元素从空瓶子中拿出来,放在当前元素的位置 } } } console.log(arr); //完成循环之后,初始数组的顺序已经发生改变 2、选择排序 将第一位依次与后面的元素相比较,得到最小值,与第一位交换。再用第二位依次与后面元素相比较,得到最小值,与第二位交换。从原始数据中找到最小元素,并放在数组的最前面。 然后再从下面的元素中找到最小元素,放在之前最小元素的后面,直到排序完成。 var arr = [5,99,2,9,1,5,67,23] for