我有这段代码:
x <- c(Char1, Char2, Char3)
y <- c(Char4, Char5, Char6)
Expected output...
(Char1[Char4], Char2[Char5], Char3[Char6])
为什么控制台日志始终打印-1? Users数组包含带有属性username的对象的数组:“admin:和password:”admin“。
答案 0 :(得分:1)
indexOf
方法使用严格等于(===
)。当您使用{foo: bar}
时,您将创建一个新的(唯一)对象,该对象的评估不会严格等于数组中已有的任何内容。
你应该做的是遍历数组并使用函数来使用深度相等来比较每个对象。简单地说,你可以使用类似的东西:
function match(arr, ref) { // Take an array and a reference object
return arr.filter(function (cur) { // Select any items in the array...
return Object.keys(ref).every(function (key) { // Where all keys...
return ref[key] === cur[key]; // Have the same value in the item and reference
});
});
}
答案 1 :(得分:0)
在这里查看indexOf 请记住,在客户端管理密码存在安全漏洞。
答案 2 :(得分:0)
this.isExist = function(user) {
console.log(users.indexOf({
username: "admin",
password: "admin"
}));
};
这里的问题是您要检查用户数组是否包含您正在创建的新对象。由于它是一个新对象,它显然不会包含它。您需要检查用户对象是否包含任何用户名或密码等于&#34; admin&#34;的对象。也许像是
this.isExist = function(user) {
for(var x = 0; x < users.length; x++) {
var current = users[x];
if(current.username === user.username && current.password === user.password) {
return true;
}
}
return false;
};
或者,您也可以简单地使用Linq.js,这对这类查询有很大帮助。它是我最喜欢的图书馆之一。