删除数组中的用户
Deleting a user in an Array
kyler 决定删除他的帐户。循环遍历你的数组
对象,直到找到 kyler 的帐户 - 使用 kyler@test.com 在数组中找到他。
找到他所在的特定索引后,将他从数组中删除。
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]);
}
}
我不确定我的每个用户是否需要在数组中分配一个变量,或者它是否是我的切片。任何指导都会很棒。谢谢
在您的代码中,if 语句将始终是 false
,因为 indexOf
method returns an integer value and you are comparing it with a string using ===
so statement would be always false
(type mismatch). And the second thing is slice
方法不会更新现有数组,它只会生成数组的浅表副本。
要使您自己的代码正常工作,
- 将 if 条件更改为
arr[i].email === 'kyler@test.com'
- 使用
Array#splice
方法删除元素,users.splice(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;
}
}
}
使用Array#findIndex
和Array#splice
方法。其中 Array#findIndex
可用于获取元素索引(对于旧浏览器使用简单循环获取索引)和 Array#splice
使用索引删除它的方法。
users.splice(users.findIndex(function(v) {
return v.email == 'kyler@test.com'
}), 1);
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'
}];
users.splice(users.findIndex(function(v) {
return v.email == 'kyler@test.com'
}), 1);
console.log(users);
仅供参考: 对于较旧的浏览器,请检查 polyfill option of findIndex
method。
更新: 或者使用简单的 while
循环更快和旧浏览器支持的版本;
var len = users.length;
// iterate upto `0`
while (len--) {
// check the email value
if (users.email == 'kyler@test.com') {
// if true then remove the element and break the while loop
users.splice(len, 1);
break;
}
}
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'
}];
var len = users.length;
while (len--) {
if (users[len].email == 'kyler@test.com') {
users.splice(len, 1);
break;
}
}
console.log(users);
因为你想改变原始数组你需要splice
function deleteUser(arr, email) {
for(var i = 0; i < arr.length; i++) {
if(arr[i].email === email) {
arr.splice(i, 1)
return;
}
}
}
您可以使用 Array.prototype.findIndex() 通过提供的测试函数查找数组中元素的索引(在您的情况下,您将检查 email
属性)。
使用 Array.prototype.slice() 删除该特定索引处的对象。
下面的示例,您可以看到具有该特定电子邮件的用户已从原始数组中删除:
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'
}];
var removeUser = function(data, email) {
var index = data.findIndex(function(item) {
return item.email === email;
});
data.splice(index, 1);
};
removeUser(users,'kyler@test.com');
console.log(users);
kyler 决定删除他的帐户。循环遍历你的数组 对象,直到找到 kyler 的帐户 - 使用 kyler@test.com 在数组中找到他。 找到他所在的特定索引后,将他从数组中删除。
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]);
}
}
我不确定我的每个用户是否需要在数组中分配一个变量,或者它是否是我的切片。任何指导都会很棒。谢谢
在您的代码中,if 语句将始终是 false
,因为 indexOf
method returns an integer value and you are comparing it with a string using ===
so statement would be always false
(type mismatch). And the second thing is slice
方法不会更新现有数组,它只会生成数组的浅表副本。
要使您自己的代码正常工作,
- 将 if 条件更改为
arr[i].email === 'kyler@test.com'
- 使用
Array#splice
方法删除元素,users.splice(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;
}
}
}
使用Array#findIndex
和Array#splice
方法。其中 Array#findIndex
可用于获取元素索引(对于旧浏览器使用简单循环获取索引)和 Array#splice
使用索引删除它的方法。
users.splice(users.findIndex(function(v) {
return v.email == 'kyler@test.com'
}), 1);
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'
}];
users.splice(users.findIndex(function(v) {
return v.email == 'kyler@test.com'
}), 1);
console.log(users);
仅供参考: 对于较旧的浏览器,请检查 polyfill option of findIndex
method。
更新: 或者使用简单的 while
循环更快和旧浏览器支持的版本;
var len = users.length;
// iterate upto `0`
while (len--) {
// check the email value
if (users.email == 'kyler@test.com') {
// if true then remove the element and break the while loop
users.splice(len, 1);
break;
}
}
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'
}];
var len = users.length;
while (len--) {
if (users[len].email == 'kyler@test.com') {
users.splice(len, 1);
break;
}
}
console.log(users);
因为你想改变原始数组你需要splice
function deleteUser(arr, email) {
for(var i = 0; i < arr.length; i++) {
if(arr[i].email === email) {
arr.splice(i, 1)
return;
}
}
}
您可以使用 Array.prototype.findIndex() 通过提供的测试函数查找数组中元素的索引(在您的情况下,您将检查 email
属性)。
使用 Array.prototype.slice() 删除该特定索引处的对象。
下面的示例,您可以看到具有该特定电子邮件的用户已从原始数组中删除:
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'
}];
var removeUser = function(data, email) {
var index = data.findIndex(function(item) {
return item.email === email;
});
data.splice(index, 1);
};
removeUser(users,'kyler@test.com');
console.log(users);