我有两个数组:
array1 = ["one", "two"];
array2 = ["two", "four"];
如果我写:
var inetersection = array1.filter(function(n){
return array2.indexOf(n) != -1
});
我得到正确答案:“两个”。
但如果我写一个函数:
function intersection (array1, array2){
array1.filter(function(n){
return array2.indexOf(n) != -1
});
}
然后console.log(intersection(array1, array2));
返回undefined
第二种语法出了什么问题?
答案 0 :(得分:5)
您的函数intersection
不返回任何内容
只需在功能的第1行添加return
答案 1 :(得分:0)
交集函数没有return语句。 你需要这样做:
function intersection (array1, array2){
return array1.filter(function(n){
return array2.indexOf(n) != -1
});
}
答案 2 :(得分:0)
您只需要在array.filter调用之前添加一个返回。
var array1 = ["one", "two"];
var array2 = ["two", "four"];
function intersection(array1, array2) {
return array1.filter(function(n) {
return array2.indexOf(n) != -1;
});
}
console.log(intersection(array1, array2));
答案 3 :(得分:0)
您必须在array1.filter
之前添加返回
function intersection (array1, array2){
return array1.filter(function(n){
return array2.indexOf(n) != -1
});
}
注意:此方法是ECMA-262标准的JavaScript扩展;如 这样它可能不存在于标准的其他实现中。 要使其工作,您需要在您的顶部添加以下代码 脚本:
if (!Array.prototype.filter) {
Array.prototype.filter = function(fun /*, thisp*/) {
var len = this.length;
if (typeof fun != "function")
throw new TypeError();
var res = new Array();
var thisp = arguments[1];
for (var i = 0; i < len; i++)
{
if (i in this)
{
var val = this[i]; // in case fun mutates this
if (fun.call(thisp, val, i, this))
res.push(val);
}
}
return res; }; }
答案 4 :(得分:0)
您的功能不会返回任何内容。你是如何解决的:
function intersection (array1, array2){
return array1.filter(function(n){
return array2.indexOf(n) != -1
});
}
所以变量有一个值,让我们从这开始:
var hello_world = "Hello World!";
这样做是因为它将hello_world
的值设置为"Hello World!"
。这很简单。
现在让我们尝试一下这个功能。
function addNumbers (number_1, number_2) {
number_1 + number_2;
}
现在让我们运行该功能
addNumbers(1, 2)
undefined
为什么我们得到undefined
?让我们回到第一个示例,并在控制台中输入类似的内容
&GT; &#34; Hello World!&#34;
&#34; Hello World!&#34;
当我们输入字符串"Hello World!"
重新调整字符串时,会发生什么。此规则在JavaScript中预设,但是当您创建自己的函数时,它并不知道return
原因是什么,让我们以jQuery为例。你可以这样做:
var elem = $("#element");
让我们看看第一部分。所以有一个名为$
的函数,该函数可能正在做很多事情。首先,它使用id
element
获取元素。它将该元素存储在elem
中。该功能可能会做很多事情,但它不是 returning
。返回一些东西是设置一个函数的值。以下是两个例子:
var function_1 = function () {
alert("Hello!");
};
var function_2 = function () {
return function () {
alert("Hello");
}
}
现在我在功能二中做了什么?这是
var variable_1 = function_1();
console.log(variable_1);
undefined
variable_1
未定义,但仍然会发出警告。这是因为它运行了函数,但它返回undefined。所以variable_1
不是一个功能;因为variable_1
未定义。我们来看看function_2
var variable_2 = function_2();
console.log(variable_2);
function () { alert("Hello"); }
variable_2(); //Alerts "Hello!"
这也有点令人困惑,因为function_2
返回一个函数,它将variable_2
设置为返回的函数。这就是为什么这样可行的原因。
希望有道理。 Here's a MDN page on return