使用for循环在数组中查找字符串是有效的,但是这里的forEach()不起作用.为什么以及如何纠正
Using a for-loop to find a string in an array is working, but forEach() does not here. Why and how to correct?
通过一些javascript数组练习来巩固我的理解。遇到了一个练习,我可以使用for循环轻松解决,但不使用forEach()方法。为什么会发生这种情况,我该如何纠正这种情况?
下面列出了练习问题,以及我使用下面两种方法的代码:"编写一个函数,接受一个数组的值,并返回一个布尔值,表示数组中是否存在单词"hello"。"
function hello_exists(array){
for(i = 0; i < array.length; i++){
if(array[i] === "hello"){
return true
}
}
}
var my_arr = ["some", "hello", "is", "cat"]
hello_exists(my_arr) // returns true as expected
function hello_exists(array){
array.forEach(function(val){
if(val === "hello") {
return true
}
})
}
var my_arr = ["some", "hello", "is", "cat"]
hello_exists(my_arr) // returns undefined. not sure why?
在forEach
中返回true
实际上并没有返回值给调用者,并且没有效果。
传递给forEach
的回调被指定在迭代中执行一组操作(不返回任何东西)
使用一个变量在forEach完成执行后返回
function hello_exists(array){
var exists = false;
array.forEach(function(val){
if(val == "hello"){
exists = true;
}
});
return exists;
}
作为一种替代方法,您可以使用some()
function hello_exists(array){
return array.some(function(val){
return val == "hello";
});
}
或过滤器()检查length
的结果
function hello_exists(array){
return array.filter(function(val){
return val == "hello";
}).length > 0;
}
第二个hello_exists函数没有返回任何东西。它可能看起来是这样的,因为你有'return'在那里,但那是在forEach函数。
在第二个示例中,您需要为hello_exists函数返回一些东西。像这样的代码可以工作
function hello_exists(array){
var isTrue = false
array.forEach(function(val){
if(val === "hello") {
isTrue = true
}
})
return isTrue
}
var my_arr = ["some", "hello", "is", "cat"]
hello_exists(my_arr) // true
想象一下forEach
:
function forEach(array, fn) {
var i;
for (i = 0; i < array.length; i++) {
fn(arr[i]); // forEach doesn't care about what the function returns
}
}
相关文章:
- Knockout.JS标签在foreach内部不起作用
- ExtJs 5.0:forEach on Array of Objects在IE8中不起作用
- 数据绑定禁用属性在 foreach 内的按钮中不起作用
- foreach:绑定不起作用 ko.mapping.fromJS 数据
- KNOCKOUTJS foreach 不起作用
- Javascript array.forEach 与自定义键不起作用
- KNOCKOUTJS 单击绑定在嵌套 foreach 中不起作用
- Jquery Bootstrap Dropdown在PHP中使用foreach循环填充的表中不起作用
- 为什么 forEach() 在 IE11 的 iframe 中不起作用
- 为什么我的引导开关在使用 foreach 构建的淘汰表中不起作用
- 淘汰ajax foreach循环不起作用
- Knockoutjs foreach第三个嵌套级别不起作用
- mysqli查询在foreach php中不起作用
- 为什么数据绑定不起作用?(使用嵌套的foreach循环)
- 提交按钮在包含foreach表的表单中不起作用
- Array.prototype.forEach()在带有get处理程序的代理上调用时不起作用
- Javascript forEach在使用1个子节点循环JSON解析XML时不起作用
- 使用for循环在数组中查找字符串是有效的,但是这里的forEach()不起作用.为什么以及如何纠正
- 在IE 8中forEach不起作用,如何更改此代码才能工作
- KnockoutJS提交绑定与foreach不起作用