亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我想要合并后變成下面這樣的內容,有什么好辦法?

我想要合并后變成下面這樣的內容,有什么好辦法?

慕容3067478 2023-04-17 22:18:36
如題,已有兩個數組var array1 = ["a", "b"];var array2 = ["c", "d"];我要合并后變成下面這樣:var array= ["a", "b", "c", "d"];應該用什么方法呢?
查看完整描述

2 回答

?
躍然一笑

TA貢獻1826條經驗 獲得超6個贊

這里給出新的例子

var arr1 = ['a'];var arr2 = ['b', 'c'];var arr3 = ['c', ['d'], 'e', undefined, null];

代碼段中修改部分前面以星號(*)標記出。

基本

執行:arr1.concat(arr2, arr3);
返回:[ 'a', 'b', 'c', 'c', [ 'd' ], 'e', undefined, null ]

考慮重復

var concat = (function(){  // concat arr1 and arr2 without duplication.
  var concat_ = function(arr1, arr2) {    for (var i=arr2.length-1;i>=0;i--) {
      arr1.indexOf(arr2[i]) === -1 ? arr1.push(arr2[i]) : 0;
    }
  };  // concat arbitrary arrays.
  // Instead of alter supplied arrays, return a new one.
  return function(arr) {    var result = arr.slice();    for (var i=arguments.length-1;i>=1;i--) {
      concat_(result, arguments[i]);
    }    return result;
  };
}());

執行:concat(arr1, arr2, arr3);
返回:[ 'a', null, undefined, 'e', [ 'd' ], 'c', 'b' ]

處理undefined和null

這里的undefined可能由數組本身存在的undefined元素引起,也可能由于delete引起。

var concat = (function(){  // concat arr1 and arr2 without duplication.
  var concat_ = function(arr1, arr2) {    for (var i=arr2.length-1;i>=0;i--) {
*      if (arr2[i] === undefined || arr2[i] === null) {
*        continue;
*      }
      arr1.indexOf(arr2[i]) === -1 ? arr1.push(arr2[i]) : 0;
    }
  };  // concat arbitrary arrays.
  // Instead of alter supplied arrays, return a new one.
  return function(arr) {    var result = arr.slice();    for (var i=arguments.length-1;i>=1;i--) {
      concat_(result, arguments[i]);
    }    return result;
  };
}());

執行:concat(arr1, arr2, arr3);
返回:[ 'a', 'e', [ 'd' ], 'c', 'b' ]

執行:delete arr3[2]; concat(arr1, arr2, arr3);
返回:[ 'a', [ 'd' ], 'c', 'b' ]

考慮數組

var concat = (function(){
  // concat arr1 and arr2 without duplication.
  var concat_ = function(arr1, arr2) {    for (var i=arr2.length-1;i>=0;i--) {*      // escape undefined and null element
*      if (arr2[i] === undefined || arr2[i] === null) {
*        continue;
*      }
*      // recursive deal with array element
*      // can also handle multi-level array wrapper*      if (classof(arr2[i]) === 'Array') {
*        for (var j=arr2[i].length-1;j>=0;j--) {*          concat_(arr1, arr2[i][j]);
*        }
*        continue;
*      }
      arr1.indexOf(arr2[i]) === -1 ? arr1.push(arr2[i]) : 0;
    }
  };
  // concat arbitrary arrays.
  // Instead of alter supplied arrays, return a new one.  return function(arr) {
    var result = arr.slice();    for (var i=arguments.length-1;i>=1;i--) {
      concat_(result, arguments[i]);
    }    return result;
  };
}());

執行:concat(arr1, arr2, arr3)
返回:[ 'a', 'd', 'c', 'b' ]
該代碼也能夠處理多層數組的解析。

注意

Native Javascript的concat操作并不改變原始數組,因此在上面提供的方案中,也不對原數組進行修改,而是返回新的數組。


查看完整回答
反對 回復 2023-04-20
?
桃花長相依

TA貢獻1860條經驗 獲得超8個贊

var merge = function() {    return Array.prototype.concat.apply([], arguments)
  }merge([1,2,4],[3,4],[5,6]);//[1, 2, 4, 3, 4, 5, 6]

另外,最好加個去重處理,像上面的例子會處理重復元素。


查看完整回答
反對 回復 2023-04-20
  • 2 回答
  • 0 關注
  • 123 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號