map() 函数如何在数组上工作
How does a map() function work over an array?
我书中的定义是该方法将调用它的数组的每个元素传递给您指定的函数,并返回一个包含该函数返回的值的新数组。
a = [1,2,3]
a.map(function(x) { return x*x; }); // b is [1,4,9]
我希望该函数仅在找不到 1 的情况下返回 4。
情况将是
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(', ');
让我们看一下第一个函数:
function f1(x) {
var bool = false;
if (x == 4){
bool = true;
}
return x;
}
此函数在本地更改变量bool
,并返回x
。所以,不管bool
发生什么,这个函数等效于恒等函数:
function(x) { return x; }
因为 .map(f)
返回一个数组,f
应用于所有元素,所以我们得到的a.map(f1)
等效于a.map(identity function)
,相当于 a
。
第二个函数在过滤器内部:
if( (x == 1) && ( bool = true)) return null;
我们这里有一些问题:
- 没有
function(x)
签名 - 您正在尝试访问在第一个函数上声明的
bool
变量。
我建议每当你使用map
和filter
时,你使用纯函数,这意味着你的函数只是处理传递给它们的参数,并返回结果。
我不确定你在第一个问题中试图完成什么;请提供更多细节,我会尽力帮助你解决问题。
在谷歌的地图、过滤和减少中查找教程。比如这个蛋头视频。
相关文章:
- Var工作,但在使用数组执行相同操作时停止
- 2D数组在Angular JS 1.2.x中工作,而不是在1.3.x中工作
- 为什么AngularJS$scope.watch()在我告诉它监视数组时会停止工作
- 如何制作Javascript's减少对数组数组的方法工作
- 试着让数组工作
- 如何让Knockout可观察数组与jQuery对话框一起工作
- 当许多元素相等时,Javascript数组排序无法正常工作
- AngularStrap Select和ng选项don'使用动态数组不能很好地工作
- 从数组中随机选择,但在for循环中选择是不可能的;没有按预期工作
- map() 函数如何在数组上工作
- Javascript数组未按预期工作
- 如何在谷歌工作表中使用数组公式时使用getLastRow.我可以让它忽略一列吗
- Web工作程序在处理大型数组时内存不足
- Polymer v1.3.1数据绑定无论是否使用带有重复模板和json数组的iron ajax都无法工作
- Knockout.js多个可观察数组不工作
- 解析数组时 for 循环无法正常工作
- ngRepeat:dupes 使用名为“name”的数组在中继器中复制键.用其他名称,它是工作
- 谷歌地图API v3动态标记,帮助使数组工作
- js 数组排序无法正常工作
- JavaScript发送变量,但插入数组PHP不能正常工作