javascript - 我无法将 for 循环转换为 forEach 循环
问题描述
我是编程新手,我想将以下 for 循环转换为 foreach 循环,这是 for 循环:
checkLetter(letter) {
//give the letter class a variable named letters to have a reference to them
var letters = $('.letter');
for (var i=0; i < letters.length; i++) {
console.log(letters[i].innerHTML);
//if the phrase contains a letter from the phrases array return true, otherwise it will return false
if(letter === letters[i].innerHTML) {
console.log('this is true')
return true
}
else return false
}
}
这就是我为这个forEach
版本写的:
checkLetter(letter) {
//give the letter class a variable named letters to have a reference to them
var letters = $('.letter');
//loop through each letter using Foreach
letters.forEach(letter)
console.log(letters[i].innerHTML);
//if the phrase contains a letter from the phrases array return true, otherwise it will return false
if(letter === letters[i].innerHTML) {
console.log('this is true')
return true
}
else return false
}
但是,我最终收到以下错误:
letter.foreach 不是函数
有人可以帮忙吗?
解决方案
letters
是一个 jQuery 对象,而不是一个数组;要遍历 jQuery 对象,您要么必须使用 jQuery 方法,例如each
:
letters.each((i, letter) => {
// do something with `letter`
或致电Array.prototype.forEach
:
Array.prototype.forEach.call(
letters,
letter => {
// do something with `letter`
}
);
另请注意,您的 currentletters.forEach(letter)
没有意义 -forEach
接受回调函数作为参数。
但是,对于您要实现的目标,当其他数组方法不能满足要求时,更适合用于Array.prototype.some
检查项目是否letters
满足条件:forEach
更适合泛型迭代:
checkLetter(letterToFind) {
var letters = $('.letter');
return Array.prototype.some.call(
letters,
letterElement => letterElement.textContent === letterToFind
);
}
或者,不太合适的 IMO 但仍然可以使用 jQuery 的each
:
checkLetter(letterToFind) {
var letters = $('.letter');
let foundLetter = false;
letters.each((i, letterElement) => {
if ($(letterElement).text() === letterToFind) {
foundLetter = true;
}
});
return foundLetter;
}
推荐阅读
- ios - 如何在 ios objective-c 中以编程方式创建自定义相机图像捕获和视频录制和保存?
- c# - 正则表达式 - 在特定情况下替换 C# 字符串中的字符
- dependency-injection - .Net Core 依赖注入。我的 Web 项目是否需要引用所有其他实施项目?
- c# - 来自 WaterfallStep Dialog MS Bot 框架 v4 的自适应卡片响应
- react-native - react-native,react-native webview font-family, webview font-family
- java - 将一组添加到列表(java)
- java - Sonarqube 误报“使用 try-with-resources 或在“finally”子句中关闭此“ResultSet”
- python - python中用带空格和不带空格的引号`'`分隔的列表和分词句子
- wordpress - woocommerce存档过滤,组合属性(颜色)
- javascript - 工具提示未显示条形图 D3.js