Javascript 从数组中调用的函数向数组添加多个元素?
这可能是一个非常简单的问题,以前可能已经回答过了,但我已经研究过了,什么也找不到。如果我运行以下代码:Javascript 从数组中调用的函数向数组添加多个元素?,javascript,arrays,function,Javascript,Arrays,Function,这可能是一个非常简单的问题,以前可能已经回答过了,但我已经研究过了,什么也找不到。如果我运行以下代码: function addElements(arg1,arg2){ return ['b','c']; } var arr = ['a',addElements('foo','bar'),'d']; alert(JSON.stringify(arr)); 然后我得到一个如下的数组: ['a',['b','c'],'d'] 我如何让它创建这样的一维数组 ['a','b','c'
function addElements(arg1,arg2){
return ['b','c'];
}
var arr = ['a',addElements('foo','bar'),'d'];
alert(JSON.stringify(arr));
然后我得到一个如下的数组:
['a',['b','c'],'d']
我如何让它创建这样的一维数组
['a','b','c','d']
谢谢
Joe如果您坚持保留此格式,您可以使用
concat
:
var arr = ['a'].concat(function(){
return ['b','c'];
}(), 'd');
alert(JSON.stringify(arr));
更清晰的方法和解释:
// initial array
var arr = ['a'];
// use your function to add data to array
arr = arr.concat(function(){
return ['b','c'];
}());
// add more values
arr.push('d');
如果您坚持保留此格式,可以使用
concat
:
var arr = ['a'].concat(function(){
return ['b','c'];
}(), 'd');
alert(JSON.stringify(arr));
更清晰的方法和解释:
// initial array
var arr = ['a'];
// use your function to add data to array
arr = arr.concat(function(){
return ['b','c'];
}());
// add more values
arr.push('d');
你可以用
reduce()
方法对累加器和数组的每个值(从左到右)应用一个函数,将其减少为单个值
结合
concat()
var arr=['a',函数(){return['b',c'];}(),'d'],
arr2=arr.reduce(函数(r,a){
返回r.concat(a);
}, []);
document.write(''+JSON.stringify(arr2,0,4)+'')代码>您可以使用
reduce()
方法对累加器和数组的每个值(从左到右)应用一个函数,将其减少为单个值
结合
concat()
var arr=['a',函数(){return['b',c'];}(),'d'],
arr2=arr.reduce(函数(r,a){
返回r.concat(a);
}, []);
document.write(''+JSON.stringify(arr2,0,4)+'')代码>我假设您要求的是一个数据结构的通用解决方案,该数据结构可以在数组中包含数组,并且您希望将其展平
如果出现这种情况,您基本上需要一个递归方法来执行此操作,即:
函数展平arr(arr){
var-outArr=[];
对于(变量i=0;i
我假设您要求的是一个数据结构的通用解决方案,该数据结构可以在数组中包含数组,并且您希望将其展平
如果出现这种情况,您基本上需要一个递归方法来执行此操作,即:
函数展平arr(arr){
var-outArr=[];
对于(变量i=0;i 我很好奇为什么你在数组定义的中间执行匿名函数…var ARR = [ a’,'b','c','',];?你到底想做什么?数组定义建立了一个复杂对象的集合,第三方组件使用它来显示对话框。这个函数将是一个实用的方法,在很多地方使用,我把它作为一个匿名函数来简洁,我会编辑这个例子。我很好奇为什么你在一个数组定义的中间执行一个匿名函数……var ARR=[ a’,'b','c','',];你到底想做什么?数组定义建立了一个复杂对象的集合,第三方组件使用它来显示对话框。该函数将是一个在许多地方使用的实用方法,为了简洁起见,我将其设置为匿名函数,我将编辑该示例。@SzabolcsPáll我假设OP不想创建包含4个常量的数组。他们可能想要生成动态插入数组的值,只是创建了一个带有常量的示例……我不能(轻松地)用第二种方法来做,因为这是在一个非常大的json块中。第一种方法会很好,谢谢。为什么不[].concat('a',function(){return['b','c'];}(),'d')代码>?@SzabolcsPáll我假设OP不想创建一个包含4个常量的数组。他们可能想要生成动态插入数组的值,只是创建了一个带有常量的示例……我不能(轻松地)用第二种方法来做,因为这是在一个非常大的json块中。第一种方法会很好,谢谢。为什么不[].concat('a',function(){return['b','c'];}(),'d')代码>?有趣的方法(我忘了reduce),但我会想象一个简单的concat会更快/更少的代码。有趣的方法(我忘了reduce),但我会想象一个简单的concat会更快/更少的代码。