我想创建一个循环来访问和推送来自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(" ");
}
但是没有发生任何事情。
请帮我创建通用代码。
答案 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);
答案 1 :(得分:0)
var res=[...tempArray1,...tempArray2,...tempArray3]
或更具动态性
var res=eval('[...tempArray1,...tempArray2,...tempArray3]') // since it is generic
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)
)