gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 16:29:04 24 4
gpt4 key购买 nike

我书中的定义是该方法将调用它的数组的每个元素传递给您指定的函数,并返回一个包含该函数返回的值的新数组。

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com