怎么用JS实现concat()方法

想手动实现concat()方法,实现过程中除了concat()其他方法可以随意调用,但实现不出来,求助~~

阅读 6.6k
7 个回答
Array.prototype.concat1=function(){
    var arr=this.slice(0)
    arguments.forEach(function(x){
        if(x instanceof Array){
            x.forEach(function(y){
                arr.push(y)
            })
        }else{
            arr.push(x)
        }
    })
    return arr
}
Array.prototype.test = function() {
    var arr = JSON.parse(JSON.stringify(this)); // 用JSON可以深度拷贝数组
    for (var i = 0; i < arguments.length; i++) {
        var argo = arguments[i]; 
        for ( var j = 0; j < argo.length; j++ ) {
            arr.push(argo[j]);
        }
    };
    return arr;
}

var arr1 = [1,2,3], arr2 = ['a','b','c'];

console.log(arr1.test(arr2));
console.log(arr1);
console.log(arr2);

要这样?

    <script type="text/javascript">
    function concat() {
        var arr = [];
        for (var i = 0; i < arguments.length; i++) {
            arr.push(arguments[i]);
        };
        return arr.toString().replace(/,/g, '');
    }
    var foo = concat('hi ', 'jack', 111); //随便输入任意数量字符串参数
    console.log(foo);
    </script>
var a = [1, 2, 3];
var b = [3, 4, 5];
var c = {a:1};
function concats(){
  var arr = [];
  for (var i=0, lens=arguments.length; i<lens; i++){
    for (var j=0, len=arguments[i].length; j<len; j++){
      arr.push(arguments[i][j]);
    }
  }
  return arr;
}
console.log(concats(a, c, b));

如果参数里没有二维数组可以试试这样

function concat() {
    var args = Array.prototype.slice.call(arguments,0),
        array = [];
    args.forEach(function(item){
        array.push(item);
    })
    return array.join(",").split(",");
}

正好在重新学习javascript 高程,

发现推荐答案写法有点问题,更改如下,自测暂时没有问题,如有请指出,谢谢

 Array.prototype.concat1 = function () {
   let arr = this.slice(0);

   arguments.length && [].forEach.call(arguments,(value) => {
     if (Array.isArray(value)) {
      value.forEach(val => {
        arr.push(val);
      })
     } else {
       arr.push(value);
     }
   })
   return arr;
 };
    function arrayConcat(arr1, arr2) {
        var newArr = new Array();
        var median;
        for (var i = 0; i < arguments[0].length; i++) {
            median = arguments[0][i];
            newArr[i] = median;
        }
        for (var i = 0; i < arguments[1].length; i++) {
            median = arguments[1][i];
            newArr[arguments[0].length + i] = median;
        }
        return newArr;
    }
    console.log(arrayConcat([1, 2, 3, 5, 9], [4, 5, 6, 88, 9]));
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题