js 常用函数 push()、pop()、shift()、unshift()、slice()、splice() 等

这篇具有很好参考价值的文章主要介绍了js 常用函数 push()、pop()、shift()、unshift()、slice()、splice() 等。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


最近对前端一些函数的用法还不是很熟悉,有一些函数容易混淆,在此总结一下,同时分享给各位小伙伴:

1. join() 函数

join() 将数组中元素 组成字符串 ,需要传个参数作为连接符,不传的话默认就是逗号。
js shift,javascript,开发语言,ecmascript

2.push() 函数

在数组 尾部逐个添加 元素,返回结果数组的长度,能接收任意数量参数,push() 修改了原数组。
js shift,javascript,开发语言,ecmascript

3. pop() 函数

pop() 移除数组最后一项,返回的是被移除项。修改原数组
js shift,javascript,开发语言,ecmascript

4.shift() 函数

shift() 删除数组的第一项元素,返回被删除的元素, 修改原数组
js shift,javascript,开发语言,ecmascript

5.unshift() 函数

向数组的头部添加元素,返回的是结果数组的长度,修改原数组
js shift,javascript,开发语言,ecmascript

6.sort() 函数

将数组按照从小到大的顺序排列, 修改原数组 。
js shift,javascript,开发语言,ecmascript
注意:
sort()方法是用于数组排序的,语法如下:array.sort(),
使用sort()方法后会改变原数组的顺序(而不是生成一个新数组,同时原数组保持不变)
示例一:对字符数组进行排序

    var myarr1=["h","e","l","l","o"];
    myarr1.sort();
    console.log(myarr1);//(5) ['e', 'h', 'l', 'l', 'o']
  1. sort中没有参数时,会按照数组元素对应的ASCII码进行比较和排序
    示例二:对数字数组进行排序
    var myarr2=[9,5,1,4,6];
    myarr2.sort();
    console.log(myarr2);//(5) [1, 4, 5, 6, 9]

ort()无法对由两位数以上的数组元素构成的数组进行合理排序
示例

    var myarr2=[10,25,3,8];
    myarr2.sort();
    console.log(myarr2);//10 25 3 8

出现原因和解决方法
因为sort()方法会首先会调用每个数组数据项的toString()方法,
转换成字符串以后再进行比较,在字符串中"25"<“3”,
解决方法是需要用到sort的参数,此时这个参数叫做比较函数

  1. sort()的参数——比较函数
    示例:使用比较函数将数字数组进行正确排序
 	var myarr2=[10,25,3,8];
    var mycompare=function (x,y){
      if(x<y) return -1;
      else if(x>y) return 1
      else return 0;
    };
    myarr2.sort(mycompare);
    console.log(myarr2);//(4) [3, 8, 10, 25]

比较函数的参数
比较函数会接受两个参数,并对两者进行比较

  • 若第一个参数应位于第二个参数之前,则返回一个负数
  • 若第一个参数等于第二个参数,则返回0
  • 若第一个参数应位于第二个参数之后,则返回一个正数
    通过以上逻辑的比较函数,会使数组最后变为升序排列,
    若要变为降序,只需返回一个负数变为返回一个正数即可(正数变负数,负数变正数)

比较函数不能对混搭(字符+数字)数组进行排序

  var myarr3=["h",10];
    myarr3.sort(mycompare);
    console.log(myarr3);//(2) ['h', 10]
    myarr3.sort();
    console.log(myarr3);//(2) [10, 'h']

不能将比较函数用于比较一个不能转化成数字的字符串和数组的排序,
这是因为比较函数会先将字符串转化成数字再比较,当字符串不能转换成数字时,就不能比较大小(不用比较函数,也就是sort不加参数时,比较的是ASCII值,此时可以比较)
正确用法:

    // 对于不能转换成数字的字符串(字母型字符串),不使用比较参数,直接比较ASCII值
    var myarr3=["h",10];
    myarr3.sort();
    console.log(myarr3);//(2) ['h', 10]
    // 对于可以转换成数字的字符串(数字型字符串),使用比较函数转换成数字再比较
    var myarr4=["23",37,"1",14];
    myarr4.sort(mycompare);
    console.log(myarr4);//(4) ['1', 14, '23', 37]

总结:
1. 数组中既有字符串又有数字时,先看看其中的字符串是字母型字符串还是数字型字符串,

2. 若是字母型字符串,sort不用带参数,直接比较ASCII值
若是数字型字符串,sort带参数,让比较函数将字符串转换成数字再比较

3.对于由对象构成的数组,如何排序?
需求
数组项是对象,现在需要根据对象的某个属性,对数组进行排序

	//要求根据对象属性age对数组进行排序
    var arr=[
      {age:10,name:'Tom'},
      {age:8,name:'Jack'},
      {age:20,name:'Michel'},
      {age:12,name:'Daniel'},
    ];

解决方法:使用比较函数

    var compare = function (obj1, obj2) {
        if (obj1.age < obj2.age) return -1;
        else if (obj1.age > obj2.age) return 1;
        else return 0;
    } 
    console.log(arr.sort(compare));

效果:

{age: 8, name: 'Jack'}
{age: 10, name: 'Tom'}
{age: 12, name: 'Daniel'}
{age: 20, name: 'Michel'}

7. reverse() 函数

数组反转。

8. concat() 函数

在不影响原数组的情况下,复制了一个数组,将参数添加到副本的尾部,因此若没有传参,就相当于复制了原数组。
js shift,javascript,开发语言,ecmascript

9.slice() 函数

slice() 不影响原数组 ,返回原数组指定开始位置 - 结束位置的新数组。 这个位置是数组的下标,当然是从0开始计算,如果只有一个参数,那就是默认第二个参数到尾部。
js shift,javascript,开发语言,ecmascript
demo中可以看出,返回的新数组是 不包含 结束位置的那个元素。
js shift,javascript,开发语言,ecmascript
如果不传第二个参数,默认返回到最后,也 不包含 最后一个的哦。 参数是 负数,相当于反着来,这时候就是包含了结束位置, 不包含 开始位置的元素。
js shift,javascript,开发语言,ecmascript

10. splice() 函数

删除任意项元素,需要两个参数:要删除的位置 和 要删除的数量。
js shift,javascript,开发语言,ecmascript
demo中看出,splice()返回被删除的元素数组,原数组被修改了。

插入任意项元素,需要三个参数:要删除的位置,一个不删 和 要插入的元素。
js shift,javascript,开发语言,ecmascript
事实证明,是在要插入位置 之前 插入的。

替换,其实就是在指定位置删除任意项元素,再插入任意项元素。
js shift,javascript,开发语言,ecmascript

11. indexOf() & lastIndexOf() 函数

查找参数元素在数组中的 位置 ,找不到就返回 -1 。那必传参数一定是目标元素咯,还有个可选参数就是要开始查找的起点位置。 indexOf() 从头到尾找,lastIndexOf() 从尾到头找。
js shift,javascript,开发语言,ecmascript文章来源地址https://www.toymoban.com/news/detail-786160.html

到了这里,关于js 常用函数 push()、pop()、shift()、unshift()、slice()、splice() 等的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C++】STL——list的介绍和使用、list增删查改函数的介绍和使用、push_back、pop_back

    list构造函数的介绍和使用      push_front()函数用于将一个新的元素插入到链表的开头位置。 通过调用push_front()函数并将待插入的元素作为参数传递给该函数,即可实现在链表开头插入新元素的操作。   和链表的插入一样,push_front()函数的时间复杂度为O(1),因为在双向链

    2024年02月15日
    浏览(56)
  • 微机原理 || push & pop 指令 (详解+例题)

    考试真的考了push和pop ,那个加减到底是什么? 考试要记:  PUSH 源    -2       字 操作(以字为单位)     例:   PUSH AL 错   必须 字 为单位   POP    源    +2       一定注意是十进制的2,注意和16进制单位转换 入栈和出栈的次序要符合后进先出原则,即: PUSH和POP一般是

    2024年02月06日
    浏览(41)
  • js unshift方法的使用

    JavaScript的 unshift() 方法是数组对象的方法之一,用于在数组的开头插入一个或多个元素,并返回新数组的长度。它接受一个或多个参数,每个参数都将插入到数组的开头。 以下是 unshift() 方法的基本语法: 在上述语法中:  array :要操作的原始数组。 element1 :要插入到开头

    2024年02月01日
    浏览(36)
  • arm push/pop/b/bl汇编指令

    目录 1. push指令 2. pop指令 3. b指令 4. bl指令 5. bx指令 1. push指令 功能描述:入栈 armv7 芯片手册: Push Multiple Registers stores multiple registers to the stack, storing to consecutive memory locations ending just below the address in SP, and updates SP to point to the start of the stored data. 语法  要点: push支持同时将

    2024年02月05日
    浏览(37)
  • 无涯教程-Perl - unshift函数

    此函数按顺序将LIST中的元素放在ARRAY的开头。这与shift()相反。 以下是此函数的简单语法- 此函数返回ARRAY中新元素的数量。 以下是显示其基本用法的示例代码- 执行上述代码后,将产生以下输出- Perl 中的 unshift函数 - 无涯教程网 无涯教程网提供描述此函数按顺序将LIST中的元素

    2024年02月12日
    浏览(57)
  • ARM汇编【3】:LOAD/STORE MULTIPLE PUSH AND POP

          有时一次加载(或存储)多个值更有效。为此,我们使用LDM(加载多个)和STM(存储多个)。这些指令有一些变化,基本上只在访问初始地址的方式上有所不同。这是我们将在本节中使用的代码。我们将一步一步地研究每一条指令。         在开始之前,请记住.字指

    2024年02月11日
    浏览(37)
  • JS中数组的splice()方法介绍 及 用原生JS手写数组splice()方法

    先介绍splice 一、splice()方法是用来对数组进行增、删操作,该方法返回被删除的元素,改变原数组 二、splice()方法接受三个及以上的参数:        第一个参数: 第一个参数是起始位置(数组的索引)       第二个参数: 第二个参数是要删除的元素个数,如果该参数是负数则默

    2024年02月07日
    浏览(29)
  • JavaScript 使用 splice 方法删除数组元素可能导致的问题

    splice() 方法通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组。 JavaScript 遍历数组并通过 splice 方法删除该数组符合某些条件的元素将会导致哪些问题? 当使用 splice 方法从 JavaScript 数组中删除元素时,可能会

    2023年04月23日
    浏览(42)
  • 无涯教程-Perl - splice函数

    此函数从LENGTH元素的OFFSET元素中删除ARRAY元素,如果指定,则用LIST替换删除的元素。如果省略LENGTH,则从OFFSET开始删除所有内容。 以下是此函数的简单语法- 该函数返回- 在标量context中,如果没有删除任何元素,则为undef 在标量context中删除了最后一个元素 在列表context中,失败时为空

    2024年02月12日
    浏览(49)
  • JavaScript高级二、构造函数&常用函数

    1、深入对象 (1)创建对象三种方式 利用对象字面量创建对象 利用 new Object 创建对象 利用构造函数创建对象 案例如下: (2)构造函数 **构造函数 :**是一种特殊的函数,主要用来 快速初始化 类似的 对象 构造函数语法 使用 new 调用函数的行为被称为 实例化 实例化

    2024年02月07日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包