javascript - map() 函数如何处理数组?

标签 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( (x == 1) && ( bool = true)){ return null}});

我想使用它的方式是迭代一个数组,然后在最后动态更改 map 。我该怎么做?

我现在的问题是字符串,所以 这是另一种情况,其中 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 发生什么情况,该函数都相当于 identity 函数:

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 变量。

我建议每当您使用mapfilter时,您都使用纯函数,这意味着您的函数只处理传递给它们的参数,并返回结果。

我不确定你在第一个问题中想要完成什么;请提供更多详细信息,我会尽力帮助您找到解决方案。

在 Google 上查找有关 map 、过滤器和归约的教程。例如,this egghead video .

关于javascript - map() 函数如何处理数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28459672/

相关文章:

ios - 如何使用 Xcode 6 在真实的 iPhone 上测试 App?

javascript - 如何从嵌套对象中获取所有具有值的键

c++ - 如何使用重载运算符合并两个数组?

用于 Visual Studio 的 Node.js 工具总是在出现异常时停止

javascript - 有没有一种方法可以在不使用各种不同方法的情况下改变字符串?

arrays - Lisp 中如何返回子数组?

c# - 暂停使用 IOCP 的应用程序时创建的线程过多

javascript - 旋转动画悬停但在悬停时移动鼠标 ->取消

javascript - 找不到 Ruby 数组的 lodash.pull 函数

php - JavaScript 相当于 PHP 的 strpbrk 函数?