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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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 掌握array.map()的方法_Javascript_Arrays - Fatal编程技术网

Javascript 掌握array.map()的方法

Javascript 掌握array.map()的方法,javascript,arrays,Javascript,Arrays,对不起,问了个基本问题 我正在尝试简化一些代码,我已经查看了array.map,而不是使用for循环来使用array.push遍历我的数组。我设法让基础知识发挥作用,但我很难应用where条件。以下是我当前的代码: var主数组=[{ “masterName”:“一个”, “minorArray”:[] }, { “masterName”:“两个”, “minorArray”:[“A”、“B”、“C”] }, { “大师名”:“三个”, “minorArray”:[“Q”、“W”、“E”、“R

对不起,问了个基本问题

我正在尝试简化一些代码,我已经查看了array.map,而不是使用for循环来使用array.push遍历我的数组。我设法让基础知识发挥作用,但我很难应用where条件。以下是我当前的代码:

var主数组=[{
“masterName”:“一个”,
“minorArray”:[]
},
{
“masterName”:“两个”,
“minorArray”:[“A”、“B”、“C”]
},
{
“大师名”:“三个”,
“minorArray”:[“Q”、“W”、“E”、“R”、“T”、“Y”]
},
{
“masterName”:“四个”,
“minorArray”:[1,2,3,4,5]
},
];
var minorArray=[];
var setMinorArray=函数(值){
var selectedName=值;
对于(变量i=0;isetMinorArray(“三”)这不适合使用
map()
。当您想要创建一个新数组,该数组具有处理原始数组中每个元素的结果时,可以使用它。循环在处理元素之前检查一个条件,然后在处理该元素之后退出循环

为此,您应该使用
find()
。它返回与条件函数匹配的第一个元素

var主数组=[{
“masterName”:“一个”,
“minorArray”:[]
},
{
“masterName”:“两个”,
“minorArray”:[“A”、“B”、“C”]
},
{
“大师名”:“三个”,
“minorArray”:[“Q”、“W”、“E”、“R”、“T”、“Y”]
},
{
“masterName”:“四个”,
“minorArray”:[1,2,3,4,5]
},
];
var minorArray=[];
var setMinorArray=函数(值){
var found=masterArray.find({masterName}=>masterName==value);
如果(找到){
minorArray=found.minorArray;
}
控制台日志(minorArray);
};

setMinorArray(“三”)
map
是用于此作业的错误工具-您正在尝试删除数组中的元素:

var主数组=[{
“masterName”:“一个”,
“minorArray”:[]
},
{
“masterName”:“两个”,
“minorArray”:[“A”、“B”、“C”]
},
{
“大师名”:“三个”,
“minorArray”:[“Q”、“W”、“E”、“R”、“T”、“Y”]
},
{
“masterName”:“四个”,
“minorArray”:[1,2,3,4,5]
},
];
var setMinorArray=函数(值){
var minorArray=masterArray.find(x=>x.masterName==value);
控制台日志(minorArray);
};

setMinorArray(“三”)
其他人提供了正确的答案,
Array.map
不是这项工作的工具,但如果你真的打算直接使用它,以下是你可以(ab)创造性地使用它的方法:


常量主数组2=[
{masterName:'One',minorArray:[]},
{masterName:'Two',minorArray:['A','B','C']},
{masterName:'Three',minorArray:['Q','W','E','R','T','Y']},
{masterName:'Four',minorArray:[1,2,3,4,5]},
]
const selectedValues=['Three','Two']
常量minorArray=masterArray2
.map({masterName,minorArray:ma})=>selectedValues.includes(masterName)?ma:[])
.join(“,”)
.split(“,”)
.filter(n=>!!n)
console.info({minorArray})//将是[“A”、“B”、“C”、“Q”、“W”、“E”、“R”、“T”、“Y”]

该数组可以转换为键值查找对象,并且从IE 9:

var masterArray=[{“masterName”:“One”,“minorArray”:[]},
{“masterName”:“Two”,“minorArray”:[“A”,“B”,“C”]},
{“masterName”:“Three”,“minorArray”:[“Q”,“W”,“E”,“R”,“T”,“Y”]},
{“masterName”:“Four”,“minorArray”:[1,2,3,4,5]};
var obj=masterArray.reduce(函数(o,v){
return(o[v.masterName]=v.minorArray,o);},{});

console.log(obj[“三”])
您不能将
where
条件应用于
映射()
。您可以使用
数组.find()
来查找所需的元素。@DanO实际上他想要
查找()
,因为他在找到第一个匹配项后中断了循环。
数组.filter()
可以说更适合描述问题(“where condition”加上“array push”),但我同意
array.find()
更适合这个特定的代码段。我以前尝试过这个方法,但不幸的是发现IE11不支持。find()好的,我使用了这个方法,并为IE 11用户找到了一个polyfil。非常感谢