数组的通用代码

时间:2016-08-02 13:35:33

标签: javascript jquery

我想创建一个循环来访问和推送来自JavaScript中三个数组的数据:

var tempArray1=new Array();
var tempArray2=new Array();
var tempArray3=new Array();

我尝试了以下代码:

for(var j=1; j<4; j++) {
  var res = new Array();
  var str = 'tempArray' + j;
  res = str.split(" ");
}

但是没有发生任何事情。

请帮我创建通用代码。

2 个答案:

答案 0 :(得分:0)

var tempArray1 =[1,2,3];
var tempArray2 =[4,5];
var tempArray3 =[6];

function myConcat(){//This is the generic method
  var result =[];
  for (var i = 0; i < arguments.length; i++) {
    result = result.concat(arguments[i]);
  }
  return result;
};

var conctenatedArray = myConcat(tempArray1,tempArray2,tempArray3);
console.log(conctenatedArray);

https://jsfiddle.net/8jwyzn0x/

**

  

OR

**

如果将这些数组包装在容器对象中,那就太好了。

function myConcat(container){//This is the generic method
  var result =[];
  for(var i in container){
   result = result.concat(container[i]);
  }
  return result;
};

var arrayContainer ={};
arrayContainer.tempArray1 =[1,2,3];
arrayContainer.tempArray2 =[4,5];
arrayContainer.tempArray3 =[6];

 var conctenatedArray = myConcat(arrayContainer);
 console.log(conctenatedArray);

https://jsfiddle.net/8jwyzn0x/1/

答案 1 :(得分:0)

var res=[...tempArray1,...tempArray2,...tempArray3]

或更具动态性

var res=eval('[...tempArray1,...tempArray2,...tempArray3]') // since it is generic

DEMO:

var tempArray1=["I","love","JS"],tempArray2=["But","I'm"],tempArray3=["a crazy","JS","Programmer"]

function range(size){ /* for you case ,it returns : [1,2,3] */
    return Array.from({length:size},(v,k)=>k+1)
}

function generate(size){
 return eval('[...'+range(size).map((i)=>'tempArray'+i).join(',...')+']')
}

console.log(
  generate(3) 
)