Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 删除数组中的用户_Javascript_Arrays_Function_Javascript Objects - Fatal编程技术网

Javascript 删除数组中的用户

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

凯勒决定删除他的帐户。循环浏览您的 对象,直到找到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]);
            }
        }
函数删除用户(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'
        }];
要使自己的代码正常工作

  • 将if条件更改为
    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;
         }
      }
    }