Javascript 删除数组中的用户
凯勒决定删除他的帐户。循环浏览您的 对象,直到找到kyler的帐户-使用kyler@test.com在阵列中找到他。 找到他所在的特定索引后,将其从数组中删除Javascript 删除数组中的用户,javascript,arrays,function,javascript-objects,Javascript,Arrays,Function,Javascript Objects,凯勒决定删除他的帐户。循环浏览您的 对象,直到找到kyler的帐户-使用kyler@test.com在阵列中找到他。 找到他所在的特定索引后,将其从数组中删除 var users = [{ name: 'talon', email: 'talon@test.com', password: 'test1234', username: 'tdog', },{ name: 'lauren
var users = [{
name: 'talon',
email: 'talon@test.com',
password: 'test1234',
username: 'tdog',
},{
name: 'lauren',
email: 'lauren@test.com',
password: 'admin1234',
username: 'ldogg',
},{
name: 'cohen',
email: 'cohen@test.com',
password: 'baby1234',
username: 'cdoggy',
},{
name: 'kyler',
email: 'kyler@test.com',
password: 'delete1234',
username: 'kdawg'
}];
到目前为止,这就是我所拥有的,但我正在转动我的轮子:
function deleteUser(arr)
for (var i = 0; i < users.length; i++) {
if (arr.indexOf([i]) === 'kyler@test.com') {
users.slice(arr[i]);
}
}
函数删除用户(arr)
对于(var i=0;i
我不确定是否我的每个用户都需要在数组中指定一个变量,或者它是否是我的切片。任何指导都会很棒。谢谢在您的代码中,if语句将始终为
false
,因为方法返回一个整数值,并且您使用==
将其与字符串进行比较,所以该语句将始终为false
(类型不匹配)。第二件事是这个方法不会更新现有的数组,它只是对数组进行一个浅拷贝
var users = [{
name: 'talon',
email: 'talon@test.com',
password: 'test1234',
username: 'tdog',
},{
name: 'lauren',
email: 'lauren@test.com',
password: 'admin1234',
username: 'ldogg',
},{
name: 'cohen',
email: 'cohen@test.com',
password: 'baby1234',
username: 'cdoggy',
},{
name: 'kyler',
email: 'kyler@test.com',
password: 'delete1234',
username: 'kdawg'
}];
要使自己的代码正常工作
arr[i]。电子邮件=='kyler@test.com“
users.拼接(i,1)移除元件代码>
break
中断for循环最终代码:
function deleteUser(arr)
for (var i = 0; i < users.length; i++) {
if (arr[i].email === 'kyler@test.com') {
users.slice(i, 1);
break;
}
}
}
var用户=[{
名称:'talon',
电邮:'talon@test.com',
密码:“test1234”,
用户名:“tdog”,
}, {
姓名:“劳伦”,
电邮:'lauren@test.com',
密码:“admin1234”,
用户名:“ldogg”,
}, {
姓名:'科恩',
电邮:'cohen@test.com',
密码:“baby1234”,
用户名:“cdoggy”,
}, {
名字:“凯勒”,
电邮:'kyler@test.com',
密码:“delete1234”,
用户名:“kdawg”
}];
用户.拼接(用户.findIndex(函数v){
return v.email=='kyler@test.com'
}), 1);
console.log(用户)代码>因为您想要改变您需要的原始数组
函数删除用户(arr、电子邮件){
对于(变量i=0;i
您可以通过提供的测试功能(在您的情况下,您将检查电子邮件
属性)来查找数组中元素的索引。
用于删除该特定索引处的对象
下面的示例,如您所见,具有特定电子邮件的用户已从原始阵列中删除:
var用户=[{
名称:'talon',
电邮:'talon@test.com',
密码:“test1234”,
用户名:“tdog”,
}, {
姓名:“劳伦”,
电邮:'lauren@test.com',
密码:“admin1234”,
用户名:“ldogg”,
}, {
姓名:'科恩',
电邮:'cohen@test.com',
密码:“baby1234”,
用户名:“cdoggy”,
}, {
名字:“凯勒”,
电邮:'kyler@test.com',
密码:“delete1234”,
用户名:“kdawg”
}];
var removeUser=函数(数据、电子邮件){
变量索引=data.findIndex(函数(项){
return item.email==电子邮件;
});
数据拼接(索引1);
};
removeUser(用户,'kyler@test.com');
console.log(用户)代码>可能的副本仅供澄清:您的if声明错误。首先,indexOf方法返回对象的索引,然后将数字与电子邮件字符串进行比较。此外,您使用[i],因此您正在查找包含i值的数组的索引,该值肯定会返回-1,因为它在数组中找不到它。下一个问题是切片调用。slice返回一个新数组,因此让函数返回它。相反,我建议您使用@Yury Tarabanko建议的拼接。不过,您应该注意,您并没有使用对象调用slice,而是使用索引i调用slice。@Urknecht感谢您的解释。这有助于我理解它。谢谢你,从逻辑上讲这是有道理的。谢谢@Yury.谢谢你!这帮了大忙。@TalonHughes:很乐意帮忙:)
function deleteUser(arr, email) {
for(var i = 0; i < arr.length; i++) {
if(arr[i].email === email) {
arr.splice(i, 1)
return;
}
}
}