我需要检查数组中是否包含单词
这是我的代码,请帮助
var name = ['heine', 'hans'];
var password = ['12343', '1234'];
function login() {
var pos;
if(name.includes('hans')) {
console.log("enthält");
pos = name.indexOf('hans');
console.log(pos)
if(password[pos] === '1234') {
console.log("angemeldet")
}
}
}
consoleout = 6,但为什么必须为1
如果单词hans
在数组中,那么我需要从单词在数组中的位置开始
答案 0 :(得分:2)
您可能会方便地使用some()
。它将把索引传递到回调中,您可以使用该回调从passwords
数组中找到相应的值:
function test(name, pw) {
let names = ["heine", "hans"];
let passwords = ["12343", "1234"];
// is there `some` name/pw combinations that matches?
return names.some((n, index) => name == n && pw == passwords[index])
}
console.log(test("hans", '1234')) // true
console.log(test("hans", '12345')) // false
console.log(test("hans", '12343')) // false
console.log(test("heine", '12343')) // true
console.log(test("mark", '12343')) // false
答案 1 :(得分:0)
您可以使用它。我不确定这是否是您想要的。
let names = ["heine", "hans"];
let password = ["12343", "1234"];
let i, temp;
function log(login, pass) {
if((i = names.indexOf(login)) !== -1){
if(password[i] === pass)
console.log("Logged!");
}
}
log("hans", "1234")
答案 2 :(得分:0)
根据您的情况,您也可以使用findIndex尝试以下操作:
const usernames = ['heine', 'hans'];
const passwords = ['12343', '1234'];
function login(user, pass)
{
let userIdx = usernames.findIndex(x => x === user);
// On a real application do not give any tip about which is
// wrong, just return "invalid username or password" on both cases.
if (userIdx < 0)
return "Invalid username!";
if (pass !== passwords[userIdx])
return "Invalid password!";
return "Login OK!"
}
console.log(login("heine", "12343"));
console.log(login("hans", "lala"));
答案 3 :(得分:0)
这里的问题是名称是window.name,它是一个字符串。
var name = ['heine', 'hans'];
console.log(window.name, typeof window.name)
var xname = ['heine', 'hans'];
console.log(window.xname, typeof window.xname)
如果您位于全局范围内,请将变量更改为另一个不保留的单词。