Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从数组中调用的函数向数组添加多个元素?_Javascript_Arrays_Function - Fatal编程技术网

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会更快/更少的代码。