javascript - 在Javascript中使用IF比较遍历数组
问题描述
我是 Javascript 新手,遇到了一些问题。我正在尝试将 Array 单词与 Array 天数进行比较。如果Array words中的单词不等于Array days中的day,则该单词将被推送到name Array。我尝试使用下面的脚本,但它给了我不同的答案。
我希望仅从单词数组中获取名称(Joe Smith),如果有的话,将排除这一天。
function newFunction () {
var days = new Array("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday");
var words = new Array("Joe", "Smith", "Tuesday");
var name = new Array();
var day = "";
for (x in words) {
for (y in days) {
if (words[x] == days[x]) {
day = days[x];
} else {
name.push(words[x]);
};
};
return name;
}
当我运行脚本时,我得到了这个结果。
结果 Joe,Joe,Joe,Joe,Joe,Joe,Joe,Smith,Smith,Smith,Smith,Smith,Smith,Smith,Tuesday,Tuesday,Tuesday
解决方案
您的问题是您正在查看days
数组,但names
即使它位于数组中的其他位置,仍将其添加到该数组中。
以下是简单 JS 中的解决方案:
function NewFunction (){
let days = new Array("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday");
let words = new Array("Joe", "Smith", "Tuesday");
let name = new Array();
let day = "";
for(let i in words){
let found = false;
for(let j in days){
if(words[i] == days[j]){
day = days[j];
found = true;
}
}
if(!found){
name.push(words[i]);
}
}
return name;
}
请注意,我正在寻找这个词,但没有在第二个循环中添加它,只是设置一个已找到的变量并将其添加到外部
注意:使用更高级的 JS 可以实现更简洁的方法
推荐阅读
- javascript - 带有slug的页面导入页面中的nuxt js
- c# - 列表的通用扩展方法
不删除空值 - javascript - 我不能将 var 设置为 window.screenY
- c - 请用 libcsv 提供建议。我只需要阅读第一行
- node.js - Sequelize - 使用 AND 运算符连接查询表
- .net - 在 VB.net 网络浏览器中嵌入 Excel 实例
- excel - VBA to click on a button on an IE form to submit it
- docker - How to access to a created docker image
- r - 有没有办法在R中密码保护多个excel文件
- asp.net-core - 使用 EF Core 通常查找和设置主键的正确方法是什么