返回顶部
首页 > 资讯 > 前端开发 > VUE >JavaScript中怎么实现数组合并操作
  • 233
分享到

JavaScript中怎么实现数组合并操作

2024-04-02 19:04:59 233人浏览 安东尼
摘要

本篇文章为大家展示了javascript中怎么实现数组合并操作,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。让我们先考虑下面这情况:var a = [ 1, 2,

本篇文章为大家展示了javascript中怎么实现数组合并操作,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

让我们先考虑下面这情况:

var a = [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ];
var b = [ "foo", "bar", "baz", "bam", "bun", "fun" ];

很显然最简单的结合结果应该是:

[
   1, 2, 3, 4, 5, 6, 7, 8, 9,
   "foo", "bar", "baz", "bam" "bun", "fun"
]

concat(..)

这是最常见的做法:

var c = a.concat( b );
a; // [1,2,3,4,5,6,7,8,9]
b; // ["foo","bar","baz","bam","bun","fun"]
c; // [1,2,3,4,5,6,7,8,9,"foo","bar","baz","bam","bun","fun"]

正如你所看到的,C是一个全新的数组,表示a和b两个数组的组合,并让A和B不变。简单吧?

但如果a有10,000个元素,而b也有一万个元素? C就会有2万个元素,所以a和b的内内存使用就会翻倍。

“没问题!”,你说。让它们被垃圾回收,把A和B设置为null,问题解决了!

a = b = null; // 'a'和'b'就被回收了

呵呵。对于只有几个元素的小数组,这没啥问题。但对于大数组,或者在内存有限的系统中需要经常重复这个过程,它其实还有很多改进的地方。

循环插入

好吧,让我们将一个数组的内容复制到另一个,使用: Array#push(..)

// `b` onto `a`
for (var i=0; i < b.length; i++) {
    a.push( b[i] );
}
a; // [1,2,3,4,5,6,7,8,9,"foo","bar","baz","bam","bun","fun"]
b = null;

现在,数组a有了数组b的内容。

似乎有更好的内存占用。

但如果a数组比较小?出于内存和速度的原因,你可能要把更小的a放到b的前面,。没问题,只需将push(..)换成unshift(..)即可:

// `a` into `b`:
for (var i=a.length-1; i >= 0; i--) {
    b.unshift( a[i] );
}
b; // [1,2,3,4,5,6,7,8,9,"foo","bar","baz","bam","bun","fun"]

功能技巧

不过for循环确实比较丑,而且不好维护。我们可以做的更好吗?

这是我们的***次尝试,使用Array#reduce:

// `b` onto `a`:
a = b.reduce( function(coll,item){
    coll.push( item );
    return coll;
}, a );

a; // [1,2,3,4,5,6,7,8,9,"foo","bar","baz","bam","bun","fun"]

// or `a` into `b`:
b = a.reduceRight( function(coll,item){
    coll.unshift( item );
    return coll;
}, b );

b; // [1,2,3,4,5,6,7,8,9,"foo","bar","baz","bam","bun","fun"]

Array#reduce(..) 和 Array#reduceRight(..)是不错的,但他们是一点点笨拙。 es6=>的箭头函数将减少一些代码量,但它仍然需要一个函数,每个元素都需要调用一次,不是很***。

那这个怎么样:

// `b` onto `a`:

a.push.apply( a, b );

a; // [1,2,3,4,5,6,7,8,9,"foo","bar","baz","bam","bun","fun"]

// or `a` into `b`:

b.unshift.apply( b, a );

b; // [1,2,3,4,5,6,7,8,9,"foo","bar","baz","bam","bun","fun"]

这是一个要好很多吧?特别是因为 unshift(..)方法在这里并不需要担心前面的反向排序。 ES6的spead操作会更漂亮: a.push( &hellip;b ) 或 b.unshift( &hellip;a

数组***长度限制

***个主要的问题是,内存使用量增长了一倍(当然只是暂时的!)被追加内容基本上是通过函数调用将元素复制到堆栈中。此外,不同的JS引擎都有拷贝数据长度的限制。 

所以,如果数组有一百万个元素,你肯定会超出了push(&hellip;)或unshift(&hellip;)允许调用堆栈的限制。唉,处理几千个元素它会做得很好,但你必须要小心,不能超过合理的长度限值。

注意: 你可以尝试一下splice(&hellip;),它跟push(&hellip;)和unshift(&hellip;)一样都有这种问题。

有一种方法可以避免这种***长度限制。

function combineInto(a,b) {
    var len = a.length;
    for (var i=0; i < len; i=i+5000) {
        b.unshift.apply( b, a.slice( i, i+5000 ) );
    }
}

上述内容就是JavaScript中怎么实现数组合并操作,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网VUE频道。

--结束END--

本文标题: JavaScript中怎么实现数组合并操作

本文链接: https://lsjlt.com/news/69873.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JavaScript中怎么实现数组合并操作
    本篇文章为大家展示了JavaScript中怎么实现数组合并操作,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。让我们先考虑下面这情况:var a = [ 1, 2, ...
    99+
    2024-04-02
  • PHP中怎么实现数组合并与拆分操作
    这篇文章给大家介绍PHP中怎么实现数组合并与拆分操作,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。PHP数组合并与拆分之array_merge_recursive()用法array_merge_recursive()可...
    99+
    2023-06-17
  • JavaScript中怎么实现数组反转操作
    JavaScript中怎么实现数组反转操作,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。如何使用Reverse方法反转Java...
    99+
    2024-04-02
  • PHP8.0中数组的合并操作:array_merge
    在PHP8.0版本中,数组合并操作是经过了改进的。这个改进主要针对的是数组数据类型的合并操作。在之前的版本中,PHP提供的数组合并操作是使用“+”符号实现的。但是,这种方法存在一些问题。如果两个数组中包含相同的键,那么第二个数组的键值将会覆...
    99+
    2023-05-14
    PHP 数组操作 array_merge
  • Python中怎么实现字典合并操作
    本篇文章给大家分享的是有关Python中怎么实现字典合并操作,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。2.1 dict.updated1.update(d2) 确...
    99+
    2023-06-16
  • JavaScript中怎么实现数组元素删除操作
    本篇文章为大家展示了JavaScript中怎么实现数组元素删除操作,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。JavaScript数组元素删除问题vararr=[...
    99+
    2024-04-02
  • 怎么在php中实现数组合并
    这期内容当中小编将会给大家带来有关怎么在php中实现数组合并,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、使用加号“+”运算符:直接将两个数组的值合并成为一个数组;$a = [1,...
    99+
    2023-06-15
  • JavaScript怎么合并数组与裁剪数组
    本文小编为大家详细介绍“JavaScript怎么合并数组与裁剪数组”,内容详细,步骤清晰,细节处理妥当,希望这篇“JavaScript怎么合并数组与裁剪数组”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深...
    99+
    2024-04-02
  • JavaScript中怎么对数组进行操作
    本篇文章给大家分享的是有关JavaScript中怎么对数组进行操作,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。js对数组对象的操作以及方法的...
    99+
    2024-04-02
  • JavaScript中怎么实现DOM操作
    这篇文章将为大家详细讲解有关JavaScript中怎么实现DOM操作,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、子节点1、元素节点、文本节点实例01h...
    99+
    2024-04-02
  • PHP中怎么实现数组转码操作
    这篇文章将为大家详细讲解有关PHP中怎么实现数组转码操作,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。//是的,你没有看错,就这一句,就转好了 $data&...
    99+
    2024-04-02
  • PHP中怎么实现关联数组操作
    这篇文章将为大家详细讲解有关PHP中怎么实现关联数组操作,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。基本的数字格式的数组遍历:<php   $temp[...
    99+
    2023-06-17
  • PHP中怎么实现数组循环操作
    PHP中怎么实现数组循环操作,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在循环里进行的是数组“读”操作,则foreach比while快,PHP数组循环操作无格...
    99+
    2023-06-17
  • 使用Python怎么操作Excel实现自动分组合并单元格
    这篇文章主要介绍了使用Python怎么操作Excel实现自动分组合并单元格,编程网小编觉得不错,现在分享给大家,也给大家做个参考,一起跟随编程网小编来看看吧!df.to_excel('test.xlsx',index=Fal...
    99+
    2023-06-06
  • chatgpt赋能python:Python数组合并操作详解-多种方法实现
    Python数组合并操作详解-多种方法实现 在Python编程中,数组合并是一种非常常见的操作。数组合并操作可以将两个或多个数组简单的合并为一个数组,这样可以方便的对数据进行处理。Python提供了多...
    99+
    2023-09-06
    python chatgpt numpy 计算机
  • JavaScript数组操作函数怎么使用
    这篇文章主要介绍“JavaScript数组操作函数怎么使用”,在日常操作中,相信很多人在JavaScript数组操作函数怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”...
    99+
    2024-04-02
  • php怎么实现两个数组合并并且求和
    实现方法:1、使用array_merge()函数合并两个数组,语法“array_merge(数组1,数组2)”,会返回一个包含两个数组中元素的合并数组;2、使用array_sum()函数计算并返回合并数组中所有元素的和即可,语法“array...
    99+
    2022-06-14
    php数组 php
  • 怎么在php中合并数组
    今天就跟大家聊聊有关怎么在php中合并数组,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。php的框架有哪些php的框架:1、Laravel,Laravel是一款免费并且开源的PHP应...
    99+
    2023-06-14
  • JavaScript中怎么实现字符串操作
    JavaScript中怎么实现字符串操作,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1. 拆分字符串JavaScript中的 split() 方法使用指定的分隔符字符串将一个...
    99+
    2023-06-20
  • js如何实现数组合并
    这篇文章主要介绍了js如何实现数组合并,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。数组合并使用展开操作符,也可以将多个数组合并起来。感谢你能够认真阅读完这篇文章,希望小编分...
    99+
    2023-06-27
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作