删除重复的数组元素

用户1394528

我正在开发一个记录客户名称和状态(儿童/成人)的程序,该程序允许从阵列中添加,显示和删除客户记录。但是,如果用户输入相同的名称和状态,例如:

名称:詹姆斯,状态:成人名称:詹姆斯,状态:成人

我希望函数仅删除一条记录,但是现在它删除了两条记录,我是否必须在此处添加中断?请帮忙。

PS:我不能使用任何内置的JavaScript功能,如slice()delete()concat()join()pop()push()reverse()shift()slice()sort()splice()toString()unshift()或者valueOf()

const MAX_CUSTOMERS = 5;

    //create new Array
    var customerList = new Array();

    function addCustomer() //add customer
       {
          if (customerList.length >= MAX_CUSTOMERS) //check max customers
             alert('Sorry, no more than ' + String(MAX_CUSTOMERS) + ' customers are allowed on the trampoline.')
          else
          {
             var newIndex = customerList.length; //add new user
             customerList[newIndex] = new Object;
             customerList[newIndex].name = prompt('What is the customer\'s name?'); //ask user enter their name
             customerList[newIndex].status = prompt('Are you a Child or an Adult?'); //ask user enter their status
             while (!(customerList[newIndex].status == 'child' || customerList[newIndex].status == 'adult')) //check user is child or adult
             {
                customerList[newIndex].status = (prompt('Error! Please Enter \'child\' or \'adult\':'));
             }
          }
       }

    function displayAllCustomers() //display customers
       {
          var message = ''; //create message
          for (var i = 0; i < customerList.length; i++) //loop customers
          {
             message += 'Name:' + customerList[i].name + ', Status: ' + String(customerList[i].status) + '. \n'; //add customer to message
          }
          if (message == '') //check message
             message = 'Sorry, there are no customer to display!';
          alert(message); //output message

       }


function identifyThenDeleteCustomer() //identify then delete customer
   {
      var customerName = prompt('Enter the name of the customer to delete:'); //get customer name
      var customerStatus = prompt('Enter \'child\' or \'adult\':'); //get customer status
      while (!(customerStatus == 'child' || customerStatus == 'adult')) //check customer status
         customerStatus = prompt('Error - enter \'child\' or \'adult\':');
      deleteCustomer(customerName, customerStatus); //delete customer
   }


function deleteCustomer(aName, aStatus) //delete customer
   {
      var newCustomerList = new Array(); //create new array
      for (var i = 0; i < customerList.length; i++) //loop customers
      {
         var customer = customerList[i];
         if ((customer.name != aName) || (customer.status != aStatus)) //check customer
         {
            var newIndex = newCustomerList.length; //add new user
            newCustomerList[newIndex] = customer;
         }
      }

      if (newCustomerList.length < customerList.length) //check deleted
      {
         alert('The customer has been deleted.');
      }
      else
      {
         alert('There are no customer to delete!');
      }

      customerList = newCustomerList; //update customer list
   }
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

<head>
<meta charset="utf-8" />
<title>Coursework 2</title>
<script src="ZouYuncongINSTG018cw2.js" type="text/javascript"></script>
</head>

<body>
<div>
<button type="button" onclick="addCustomer();">Add Customer</button><br>
<button type="button" onclick="displayAllCustomers();">Display All Customers</button><br>
<button type="button" onclick="identifyThenDeleteCustomer();">Identify then Delete Customer</button>
</div>
</body>

</html>

卡尔达斯GSM

您可以像这样设置删除功能,

function deleteCustomer(aName, aStatus) //delete customer
{
   for (var i = 0; i < customerList.length; i++) //loop customers
   {
      var customer = customerList[i];
      if ((customer.name == aName) && (customer.status == aStatus)) //check customer
      {
         customerList = array.splice(i, 1);//delete from array itself
         alert('The customer has been deleted.');
         return;//stop
      }
   }
   alert('There are no customer to delete!');
}

它将仅删除一个。

如您所说,您不能使用内置函数。在这种情况下,您必须在要删除的元素之前和之后复制元素。您可以拥有一个控制变量,标记您已经找到要删除的变量。因此不会再有删除操作。

例如,

function deleteCustomer(aName, aStatus) //delete customer
{
   var onedeleted = false;
   var newCustomerList = new Array(); //create new array
   for (var i = 0; i < customerList.length; i++) //loop customers
   {
      var customer = customerList[i];
      if ((customer.name != aName) || (customer.status != aStatus) || onedeleted) //check customer
      {
         var newIndex = newCustomerList.length; //add new user
         newCustomerList[newIndex] = customer;
      }
      else 
          onedeleted = true;
   }

   if (newCustomerList.length < customerList.length) //check deleted
   {
      alert('The customer has been deleted.');
   }
   else
   {
      alert('There are no customer to delete!');
   }

   customerList = newCustomerList; //update customer list
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

删除重复的数组元素

来自分类Dev

从Int数组中删除重复(重复)的元素

来自分类Dev

从数组列表中删除重复的元素

来自分类Dev

从数组列表中删除重复的元素

来自分类Dev

删除数组中的重复元素

来自分类Dev

删除数组中的重复元素

来自分类Dev

在Perl中从数组中删除重复的元素

来自分类Dev

删除数组中的元素,这些元素被重复并顺序跟随

来自分类Dev

连接并从numpy数组中删除重复的元素

来自分类Dev

如何从多维数组中删除一些重复的元素

来自分类Dev

无法从哈希图的数组列表中删除重复的元素

来自分类Dev

汇总和删除Numpy数组的重复元素

来自分类Dev

使用递归函数删除所有重复的数组元素

来自分类Dev

根据多个键的重复值从对象数组中删除元素

来自分类Dev

从两个Numpy数组中删除重复的元素

来自分类Dev

如何使用流API从Integer数组中删除重复的元素

来自分类Dev

使用递归函数删除所有重复的数组元素

来自分类Dev

如何删除多维数组中的重复元素?

来自分类Dev

根据多个键的重复值从对象数组中删除元素

来自分类Dev

如何从 Swift 5 中的数组中删除重复元素?

来自分类Dev

Lua:删除重复的元素

来自分类Dev

处理重复的数组元素

来自分类Dev

存储重复的数组元素

来自分类Dev

数组中的元素重复

来自分类Dev

存储重复的数组元素

来自分类Dev

删除重复的数组jQuery

来自分类Dev

删除重复数组

来自分类Dev

如何从数组中删除元素而不删除重复项。在C#中

来自分类Dev

从数组中删除原始元素,而不在perl中删除其重复项