javascript合并两个数组
<p>在开发的过程中,我们很多时候会遇到需要将两个数组合并成一个数组的情况出现。</p><div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">var</span> arr1 = ;
</span><span style="color: rgba(0, 0, 255, 1)">var</span> arr2 = ;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 将arr1和arr2合并成为</span></pre>
</div>
<p>这里总结一下在JavaScript中合并两个数组的方法。</p>
<p><span style="background-color: rgba(204, 255, 204, 1)">for循环数组</span></p>
<p>这个方式是最简单的,也是最容易实现的。</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">var</span> arr3 =<span style="color: rgba(0, 0, 0, 1)"> [];
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 遍历arr1</span>
<span style="color: rgba(0, 0, 255, 1)">for</span> (<span style="color: rgba(0, 0, 255, 1)">var</span> i = 0; i < arr1.length; i++<span style="color: rgba(0, 0, 0, 1)">) {
arr3.push(arr1);
}
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 遍历arr2</span>
<span style="color: rgba(0, 0, 255, 1)">for</span> (<span style="color: rgba(0, 0, 255, 1)">var</span> j = 0; j < arr2.length; j++<span style="color: rgba(0, 0, 0, 1)">) {
arr3.push(arr2);
}
console.log(arr3); </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> </span></pre>
</div>
<p>另外也可以用增强型for循环或forEach()方法去实现。</p>
<p>for循环这种方式几乎没有任何问题,只是很多追求精简编程的人会鄙视这种方式(摊手)。</p>
<p><span style="background-color: rgba(204, 255, 204, 1)">concat()方法</span></p>
<p>JavaScript的Array对象中提供了一个concat()方法,作用是连接两个或更多的数组,并返回一个新的数组。</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">var</span> arr3 =<span style="color: rgba(0, 0, 0, 1)"> arr1.concat(arr2);
<br>console.log(arr3); </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> </span></pre>
</div>
<p>要注意的是,concat()方法不会改变原数组,而是返回一个新的数组。这样,当我们需要进行多次数组合并的时候,就会造成内存浪费。</p>
<p><span style="background-color: rgba(204, 255, 204, 1)">apply()方法</span></p>
<p>函数的apply方法有一个特性,那就是func.apply(obj,argv),argv是一个数组。所以我们可以利用这点。</p>
<div class="cnblogs_code">
<pre>arr1.push.apply(arr1, arr2);</pre>
</div>
<p>调用arr1.push这个函数实例的apply()方法,同时把arr1、arr2当作参数传入,这样arr1.push这个方法就会遍历arr1和arr2数组的所有元素,达到合并的效果。</p>
<p>简单理解就是,上面这段代码可以看做是:</p>
<div class="cnblogs_code">
<pre>arr1.push(4, 5, 6);</pre>
</div>
<p>这种方式只用一行代码就解决了问题,可以说非常6了。</p>
<p><span style="background-color: rgba(204, 255, 204, 1)">总结</span></p>
<p>上面三种方法在常规使用上其实并没有区别,只是要另外注意两个小问题:</p>
<p>1.以上3种合并方法在举例的时候并没有考虑过两个原数组谁的长度更小,好的做法是预先判断两个原数组哪个更大,然后使用大数组合并小数组,这样就能减少了数组元素操作的次数,提高了代码的执行效率。</p>
<p>2.有时候我们既不希望原数组(arr1、arr2)改变,又不想手动新增一个变量,这时就只能使用concat()方法了。</p>
<p> </p>
<p>"<span class="ask-title">生命中曾拥有过的所有灿烂,可能终究都需要用寂寞去偿还。</span>"</p>
</div>
<div id="MySignature" role="contentinfo">
你要去做一个大人,不要回头,不要难过。<br><br>
来源:https://www.cnblogs.com/yanggb/p/11463434.html
頁:
[1]