我有一个数组,其值是ID,电子邮件和密码。
let array = [
{id: hyu, email: a@a.com, password: 123},
{id: rft, email: b@b.com, password: 456},
{id: ght, email: c@c.com, password: 789},
{id: kui, email: d@d.com, password: 679}
]
现在,当我的条件匹配时,我想返回该对象。为此,我使用JavaScript some
函数创建了一个函数,但我想返回该对象,并且我们知道some
函数返回布尔值。
我不知道该怎么做。
我的代码是:
const isEmailExists = (email, array) => {
return array.some(function(el) {
return el.email === email;
});
};
if (isEmailExists("c@c.com", array) == true) {
// I want to work here with returned objects i.e on success case
} else {
// error case
}
真的很感谢任何帮助
答案 0 :(得分:9)
您可以使用.filter()
并检查过滤后的数组的长度是否大于0
:
let array = [
{id: 'hyu', email: 'a@a.com', password: 123},
{id: 'rft', email: 'b@b.com', password: 456},
{id: 'ght', email: 'c@c.com', password: 789},
{id: 'kui', email: 'd@d.com', password: 679}
]
let filtered = array.filter(row => row.email === 'a@a.com');
console.log(filtered);
if (filtered.length > 0) { /* mail exists */ }
else { /* mail does not exist */ }
答案 1 :(得分:9)
假设电子邮件是唯一的,则可以使用find()
。如果不存在电子邮件,它将返回null
。
let array = [{"id":"hyu","email":"a@a.com","password":123},{"id":"rft","email":"b@b.com","password":456},{"id":"ght","email":"c@c.com","password":789},{"id":"kui","email":"d@d.com","password":679}];
const getObject = (email, array) => {
return array.find(function(el) {
return el.email === email;
}) || null;
};
console.log(getObject("c@c.com", array));
更短版本:
const getObject = (email, array) => array.find(el => el.email === email ) || null;
答案 2 :(得分:1)
您可以使用一个函数并交出键和值并过滤数组。
function getObjects(array, key, value) {
return array.filter(object => object[key] === value);
}
let array = [{ id: 'hyu', email: 'a@a.com', password: 123 }, { id: 'rft', email: 'b@b.com', password: 456 }, { id: 'ght', email: 'c@c.com', password: 789 }, { id: 'kui', email: 'd@d.com', password: 679 }];
console.log(getObjects(array, 'email', 'c@c.com'));
答案 3 :(得分:1)
当期望零个或一个匹配时,请使用find()
,而不要使用filter()
。如果没有找到匹配项,并且find()
是虚假的并且任何对象都是真实的,则undefined
将返回undefined
,您可以直接将返回值用作if
子句的条件
const array = [
{id: 'hyu', email: 'a@a.com', password: 123},
{id: 'rft', email: 'b@b.com', password: 456},
{id: 'ght', email: 'c@c.com', password: 789},
{id: 'kui', email: 'd@d.com', password: 679}
]
const mail = array.find(row => row.email === 'a@a.com');
if (mail) {
// Do stuff with mail
console.log(mail);
} else {
// Handle error
}
答案 4 :(得分:0)
const found = array.find(item => (item.email === 'a@a.com')) || null;
console.log(found);