Javascript map()函数如何在数组上工作?
我书中的定义是,方法将调用它的数组的每个元素传递给指定的函数,并返回一个包含该函数返回的值的新数组Javascript map()函数如何在数组上工作?,javascript,arrays,debugging,filter,map-function,Javascript,Arrays,Debugging,Filter,Map Function,我书中的定义是,方法将调用它的数组的每个元素传递给指定的函数,并返回一个包含该函数返回的值的新数组 a = [1,2,3] a.map(function(x) { return x*x; }); // b is [1,4,9] 如果没有找到4,我希望函数只返回1 情况可能是这样的 var bool = false; a.map(function(x) { if (x == 4){ bool = true; } return x; }).filter(function(x) {if( (
a = [1,2,3]
a.map(function(x) { return x*x; }); // b is [1,4,9]
如果没有找到4,我希望函数只返回1
情况可能是这样的
var bool = false;
a.map(function(x) {
if (x == 4){
bool = true;
}
return x;
}).filter(function(x) {if( (x == 1) && ( bool = true)){ return null}});
我希望使用它的方法是迭代数组,然后在最后动态更改映射。我该怎么做
我现在的问题是字符串,所以
这里是另一个例子,其中1现在被称为未知。如果在“unknown”之后发现任何内容,请在加入之前从列表中删除“unknown”
var wordList = [];
var newSource = false;
str = results[i].Meaning.map(function(m){
count++;
if ((!m.Source && !contains(wordList, "unknown"))) {
wordList[count] = "unknown";
return "unknown";
}
if (!m.Source ) {
return m.Source;
}
if ( contains(wordList, "unknown") ) {
newSource = true;
}
if (!contains(wordList, m.Source) ) {
wordList[count] = m.Source;
return m.Source;
}
}).filter(function(x) { return x }).filter(function(x){
if (newSource == true ) { return (x != "unknown")}}).join(', ');
让我们看一下第一个函数:
function f1(x) {
var bool = false;
if (x == 4){
bool = true;
}
return x;
}
function(x) { return x; }
此函数在本地更改变量bool
,并返回x
。因此,无论bool
发生什么情况,此函数都等效于标识函数:
function f1(x) {
var bool = false;
if (x == 4){
bool = true;
}
return x;
}
function(x) { return x; }
由于.map(f)
返回一个数组,其中f
应用于所有元素,因此a.map(f1)
相当于a.map(标识函数)
相当于a
第二个功能位于过滤器内部:
if( (x == 1) && ( bool = true)) return null;
我们这里有一些问题:
- 没有
签名函数(x)
- 您正试图访问在第一个函数中声明的
变量bool
map
和filter
,我建议您使用纯函数,这意味着您的函数只需处理传递给它们的参数,然后返回结果
我不确定你在第一个问题中想要完成什么;请提供更多细节,我会尽力帮助您解决问题
在Google上的map、filter和reduce中查找教程。例如,.你没有在map函数中包含一个
return
。对于这样的问题,我建议你经常看一看。听起来你只是想a.indexOf(4)>=0
。我看不出有什么理由在这里使用.map()
。这是一个一般情况,通常在map中会有很多条件。令人恼火的是动态地改变内容。只是不清楚你想解决什么问题。您有一个输入数组,但不清楚您希望最终输出是什么。请同时显示输入和所需输出,我相信这里的人可以帮助您选择最佳方式,但您必须显示所需结果。感谢您的帮助和链接。顺便说一句,我修正了编辑。现在好多了,@collegaldo。但是,我仍然无法理解第二个算法需要什么。你能就你的问题给出一些输入和输出的例子吗,这样我就可以帮助你解决问题了?是的,我会在24小时内回复。