【发布时间】:2015-02-11 16:41:27
【问题描述】:
我书中的定义是该方法将调用它的数组的每个元素传递给您指定的函数,并返回一个包含该函数返回值的新数组。
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 现在称为未知。如果发现“未知”之后的任何内容,请在加入之前从列表中删除“未知”。
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(', ');
【问题讨论】:
-
您没有在地图函数中包含
return。 -
对于此类问题,我建议您随时查看MDN Docs。
-
听起来你只是想要
a.indexOf(4) >= 0。我没有看到在这里使用.map()的理由。 -
那是一般情况,通常map里面会有很多条件。令人讨厌的是动态更改内容。
-
目前还不清楚您要解决什么问题。您有一个输入数组,但不清楚您希望最终输出是什么。请同时显示输入和所需的输出,我相信这里的人可以帮助您选择到达那里的最佳方式,但您必须显示所需的结果。
标签: javascript arrays debugging filter map-function