Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.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_Node.js - Fatal编程技术网

javascript中的嵌套数组到单个数组

javascript中的嵌套数组到单个数组,javascript,arrays,node.js,Javascript,Arrays,Node.js,这可能是一个愚蠢的问题,但我对javascript太陌生了。我想得太多了 我将树立一个榜样: 我有: animals['Cat', 'Dog']; 以及 我想: animalmood[0]=('Cat', 'Happy') animalmood[1]=('Cat', 'Sad') animalmood[2]=('Dog', 'Happy') animalmood[3]=('Dog' 'Sad') 如何做到这一点 它的正确语法是什么?欢迎任何帮助。使用嵌套的for循环,将每个元素组合推入输出数

这可能是一个愚蠢的问题,但我对javascript太陌生了。我想得太多了

我将树立一个榜样:

我有:

animals['Cat', 'Dog'];
以及

我想:

animalmood[0]=('Cat', 'Happy')
animalmood[1]=('Cat', 'Sad')
animalmood[2]=('Dog', 'Happy')
animalmood[3]=('Dog' 'Sad')
如何做到这一点


它的正确语法是什么?欢迎任何帮助。

使用嵌套的
for
循环,将每个元素组合推入输出数组

var动物=['Cat','Dog'],
心情=[‘悲伤’、‘快乐’],
动物情绪=[];
对于(变量i=0;iconsole.log(animalsMood)更高级的答案是使用
reduce
功能:

const animals = ['Cat', 'Dog'];
const moods = ['Sad' , 'Happy'];


const animalsMood = animals.reduce((result, animal) => 
  result.concat(moods.map(mood => [animal, mood]))
, []);

console.log(JSON.stringify(animalsMood));
使用排列而不是concat

const animals = ['Cat', 'Dog'];
const moods = ['Sad' , 'Happy'];


const animalsMood = animals.reduce((result, animal) => 
  [...result, ...moods.map(mood => [animal, mood])]
, []);

console.log(JSON.stringify(animalsMood));

这是什么格式的
动物食品[0]=('Cat','Happy')
?你想把它作为一个字符串
动物食品[0]=“猫,快乐”
或作为数组
animalmood[0]=['Cat','Happy']
?这可能的副本并不更高级,这只是一种不同的编程风格。这是功能性的,而不是强制性的。我真希望JavaScript有一个
.collect()
方法,而不是强迫我们使用
.reduce()
或其他一些非传统函数。
reduce
map
函数是传统函数,它们满足函数语言(如JavaScript)的所有“纯函数”标准。使用和理解
reduce
将使您能够使用和理解NoSQL数据库中的复杂操作,或者理解
Redux
中reducer的主要概念之一,或者。。。我还建议您阅读许多其他高级逻辑结构或操作。。。。另一个StackOverflow问题(因为我们最后使用的是StackOverflow)可能会给您一些想法我只是说
reduce
在生成数组时是非传统的。收集是一种减少,但如果在使用
reduce
收集
时没有那么多样板文件,那就更好了。纯函数式语言有更好的选择。
const animals = ['Cat', 'Dog'];
const moods = ['Sad' , 'Happy'];


const animalsMood = animals.reduce((result, animal) => 
  [...result, ...moods.map(mood => [animal, mood])]
, []);

console.log(JSON.stringify(animalsMood));