2024年9月slice会不会改变原数组(原生JS中数组常见的方法)
⑴slice会不会改变原数组(原生JS中数组常见的方法
⑵原生JS中数组常见的方法
⑶shift():删除数组中第一个元素,并将长度减,下面举例:vararr=?varres=arr.shift()console.log(res)?//打印出来返回值是被删除的数组元素.?pop():删除数组中最后一个元素,并将长度减,下面举例:vararr=?varres=arr.pop()console.log(res)//打印出来返回值是删除的数组元素.unshift():往数组前面添加一个或多个数组元素,长度要改变,下面举例:varres=arr.unshift(’张姨’,)?console.log(res)??console.log(arr)//?返回值是增加后数组的长度.push():往数组结尾添加一个或多个数组元素,长度要改变varres=arr.push(’随便’,’哈哈’)console.log(arr)console.log(res).为了更好的代入,下面我们来看一个综合的列子:vararr=要求将数组中的项去掉,将不为的值存入一个新的数组,生成新的数组声明一个新的数组varnewArr=遍历for(vari=;i《arr.length;i++){??????//把的数组元素删除掉??????if(arr==){????????continue??????}??????//把这些数据添加到新的数组??????newArr.push(arr)????}????console.log(newArr)?//最后输出查看结果.concat():方法用于连接两个或多个数组,不改变原数组。返回一个新的数组vararrName=vararrName=varnewData=arrName.concat(arrName)console.log(newData).reverse()?逆向排序,原数组也被逆向排序了(倒置varnumArr=varres=numArr.reverse()console.log(res)console.log(numArr).toString()?将数组转成字符串,推荐使用varnumArr=toString()属于一个对象的方法varres=numArr.toString()console.log(res)String它是强制数据类型转换的方法,它不属于数组这个对象.join(“拼接符”)将数组转成字符串,中间以拼接符连接varnumArr=varres=numArr.join(’&’)console.log(res).?slice(start,end):?不修改原数组,将原数组中的指定区域数据提取出来。start开始end结束。??????如果参数是负值表示从倒数开始。不含结束位置??????????????????????????(不包含结束位置)?vararrName=varres=arrName.slice(,)?console.log(res).splice??????删除:用于删除元素,两个参数,第一个参数(要删除第一项的位置,第二个参数(要删除的项数??????插入:向数组指定位置插入任意项元素。三个参数,第一个参数(开始位置,第二个参数(,第三个参数(插入的项??????注意点:第二个参数(为不会删除任何项??????替换:向数组指定位置插入任意项元素,同时删除任意数量的项,三个参数。第一个参数(起始位置,第二个参数(删除的项数,第三个参数(插入任意数量的项?vararrName=????//删除????//varres=arrName.splice(,)????//返回值是被删除的数组元素????//console.log(res)????//插入????//arrName.splice(,,’嘿嘿’,’哈哈’)????//console.log(arrName)????//替换????arrName.splice(,,’都美竹’,’hello’)????console.log(arrName)
⑷concat(把元素衔接到数组中。concat()方法用于连接两个或多个数组。该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。.every()方法使用指定函数检测数组中的所有元素:.filter(返回满足断言函数的数组元素。.forEach(为数组的每一个元素调用指定函数。indexOf(在数组中查找指定元素。如果找到的话返回该元素的索引没找到返回-.join(将数组的所有元素转化为字符串。.lastIndexOf(在数组中反向查找。.map()从数组的元素中,计算出新的数组。.some(测试是否至少有一个数组元素能让断言函数为真。.slice(返回数组的一部分。.reduce(从数组的元素中,计算出一个值。参数接收一个函数函数中接收两个参数第一个是数组的值,第二个是初始值,不传的话就是循环调用该函数前一个的返回值是后面的第二个参数.reduceRight(从右往左计算数组
⑸slice方法和splice方法的区别
⑹两者都是对数组进行操作。???slice()方法是可以提取数组的某个部分,并以新的字符串返回被提取的部分。这部分返回的值,即为被操作的值???splice()方法是用于插入、删除或者替换数组的元素。即原数组不会改变。
⑺数组的splice与slice有什么区别
⑻splice是数组的一个强大的方法,既可以添加元素,也可以删除元素,还是同时删除元素并添加元素,可以接受多个参数。第一个参数是start,截取的初始位置第二个参数是deleteCount,截取元素的个数第三个及后面的参数,在删除位置参数的元素使用splice的返回值是一个截取数组,这个方法会修改原数组,原数组此时是被截取后的数组了,splice可以不传参,返回一个空数组,也没有改变原数组;传一个参数的时候,代表从当前位置删除到数组尾部;slice方法被称为切片工具,最多可以接收两个参数
⑼js哪些方法改变原数组哪些不改变原数组
⑽shift:将第一个元素删除并且返回删除元素,空即为undefined、unshift:向数组开头添加元素,并返回新的长度、pop:删除最后一个并返回删除的元素、push:向数组末尾添加元素,并返回新的长度、reverse:颠倒数组顺序、sort:对数组排序、splice:splice(start,length,item)删,增,替换数组元素,返回被删除数组,无删除则不返回、copyWithin:方法浅复制数组的一部分到同一数组中的另一个位置,并返回它,不会改变原数组的长度。、fill:用一个元素填充原来的数组、concat:targetArr.concat(otherArr)连接多个数组,返回新的数组、join:将数组中所有元素以参数作为分隔符放入一个字符、slice:slice(start,end),返回选定元素、map,filter,forEach,some,every,reduce等不改变原数组
⑾js将一位数组分割成每三个一组
⑿巧妙的运用了slice方法不会改变原数组,并且返回一个新的数组,而且当slice(start,end)第二个end参数值大于数组length的时候,会按照数组length算,取的数组结束的所有元素
⒀哪些方法改变原数组,哪些方法不改变原数组
⒁shift:将一个元素删除并且返回删除元素,删除第一项、unshift:在原数组的最前端依次添加,并且返回新数组的长度、posh:在原数组的最后依次添加项,并返回新数组的长度、pop:将一个元素移除并返回移除的项,最后一项、reverse:反转数组的顺序、sort:对数组进行依次排序、splice:三个参数。第一个代表开始的下标,第二个代表要删除的个数,第三个代表要替换的东西????返回被删除的数组、concat:拼接,连接多个数组、slice:提取,返回被提取的字符:join:将数组中所有元素以参数作为分隔符放入一个字符、map,filter,some,ever等不改变原数组
⒂js数组复制(不改变原数组
⒃需要从后台取出数据,在前台接收并要保存在一个全局变量,因为之后还要对此使用此全局变量。全局变量varglobalarr=;varx=globalarr.concat(arr);varms={};ms.id=““;ms.price=’.’;x.push(ms);console.log(’after=》x’,x);console.log(’after=》arr’,arr);
⒄js常用增删改查方法/js比较运算符逻辑运算符赋值运算符算术运算符
⒅js数组遍历某个值求和
⒆可接收任意数量的参数,把它们逐个添加至数组末尾,并返回修改后数组的长度。例如:
⒇该方法与push()类似,也可接收任意数量的参数,只不过是将参数逐个添加至数组前端而已,同样返回新数组长度。咱们接着上面的例子:
⒈该方法与push()方法有点类似,同样是将元素添加至数组末尾,只不过这个数组已经不是原来的那个数组了,而是其副本,所以concat()操作数组后会返回一个新的数组。具体用法如下:
⒉不传参数,返回当前数组副本②传递一或多个数组,则该方法会将这些数组中的每一项都添加到结果数组中③传递非数组参数,这些参数就会被直接添加到结果数组的末尾
⒊继续接着上面的栗子:
⒋例子中一目了然,原数组保持不变,新数组后面添加了、、三个元素。
⒌前面的三个方法都具有很大局限性,因为不是添加到数组前就是数组后,而splice()就不一样了,它非常灵活和强大。灵活是因为它可以添加元素到数组的任意位置,强大是因为它除了可以添加元素之外还具有删除和替换元素的功能(这个后面会陆续讲到。
⒍splice()可以向数组指定位置添加任意数量的元素,需要传入至少个参数:起始位置、(要删除的元素个数和要添加的元素。
⒎依然接着上面的例子继续:
⒏可以看出,splice()与push()和unshift()一样是直接在原数组上修改的。
⒐与push()方法配合使用可以构成后进先出的栈,该方法可从数组末尾删除最后一项并返回该项。
⒑与push()方法配合使用可以构成先进先出的队列,该方法可删除数组第一项并返回该项。
⒒定义和用法slice()方法以新的数组对象,返回数组中被选中的元素。
⒓slice()方法选择从给定的start参数开始的元素,并在给定的end参数处结束,但不包括。
⒔注释:slice()方法不会改变原始数组。
⒕该方法同concat()一样是返回一个新数组,不会影响原数组,只不过slice()是用来裁剪数组的,返回裁剪下来的数组,具体用法如下:
⒖好,继续讲这个“万能”的方法。
⒗上面讲到,该方法在添加数组元素的时候需要传入个以上参数,而其中第个参数就是用于指定要删除元素的个数的,那时我们传的是数字。那么,如果单单只需删除元素,我们就只需给splice()传入两个参数,第个参数用于指定要删除的第一项的位置,第个参数用于指定要删除元素的个数。
⒘从索引项为的位置开始删除个元素,所以结果为。
⒙这个其实最灵活的方式就是直接使用splice()这个强大的方法了,其实通过以上对该方法的了解,我们大致就能知道使用该方法修改数组元素的基本原理。
⒚原理很简单,就是向指定位置插入任意数量的元素,且同时删除任意数量的元素。
⒛indexOf()和lastIndexOf()
这两个方法都接收两个参数:要查找的项和(可选的表示查找起点位置的索引。其中,indexOf()从数组的开头(位置开始向后查找,lastIndexOf()方法则从数组的末尾开始向前查找。
当找不到该元素时,返回-,lastIndexOf()方法同理。
数据类型《script》引用数据类型object对象类型number数字类型包含所有的数字(整数,浮点数,正数,负数,极大极小数,Infinity(分母为零),NaN(notanumber)string字符串类型引号包含的任意文本,单双引号都可以
比较运算符《script》/*比较运算符比较两个值的大小返回一个布尔值(true或false》《》=《===!====!====等于,只判断数值===全等,绝对等于,即判断数据类型也判断数值!===取反!=====取反console.log(undefined==null);//true都没有值console.log(undefined===null);//false数据类型不同undefinedobjectconsole.log(NaN==NaN);//falseconsole.log(NaN===NaN);//falseconsole.log(NaN!=NaN);//trueconsole.log(NaN!==NaN);//true/《/script》逻辑运算符《script》/逻辑运算符连接多个表达式,返回一个布尔值(true或false&&逻辑与并且所有的表达式都为true,结果才为true,有一个为false结果就为false||逻辑或或者所有的表达式都为false,结果才为false,有一个为true结果就为true!逻辑非取反表达式为true取反就为true,反之亦然注意:逻辑与的优先级大于逻辑或*/《/script》逻辑运算符演示
赋值运算符《script》/*赋值运算符=等号右边的值赋值给左边+=x+=yx=x+y下同-=*=/=%=要的是余数*/《/script》《script》x=;y=;console.log(x/=y)《/script》
算术运算符《script》/*算术运算符+-*/%(取余,取模)++(自增--(自减%(取余,取模)应用判断奇偶数、倍数++相当于自己加x++相当于x=x+--相当于自己加x--相当于x=x-+运算碰到字符串,直接进行字符串拼接,返回string类型-*/%遇到字符串,都转换成number类型进行计算,如果不能转换成数字,则返回NaN,数据类型未numbertrue转换false转换为++--前++和后++,对于变量自己来说没有区别都是+前++先赋值在加后++先加再赋值/《/script》《script》/varx=;//numbervary=;//numbersole.log(x+y);//sole.log(x-y);//sole.log(x*y);//sole.log(x/y);//.sole.log(x%y);//*/