Javascript添加/删除数组中的特定值
问题描述:
我正在寻找一种方法,根据数组中是否已存在该值来添加和删除数组中的值。我有一个订单表,其中包含一个选择框,客户名称和订单ID,并且我正在根据客户名称构建这个数组。Javascript添加/删除数组中的特定值
Order Table
-----------
Select Customer Order_ID
------------------------------
[X] Joe 1
[X] Joe 2
[] Mark 3
[] Mark 4
[X] Mark 5
我创建一个客户阵列,其推动在表中选择的客户名称。在上述情况下,如果选择的名称在数组中已经存在,那么就忽略说名字,所以阵列应该显示....
//this
customerArray["Joe", "Mark"]
//not this
customerArray["Joe", "Joe", "Mark"]
但是,它不应该从阵列中删除客户的名字,直到在所述数组中没有包含客户名称的选定记录。
Order Table
-----------
Select Customer Order_ID
------------------------------
[X] Joe 1
[] Joe 2
[] Mark 3
[] Mark 4
[X] Mark 5
这应该还是有
customerArray["Joe", "Mark"]
但是......
Order Table
-----------
Select Customer Order_ID
------------------------------
[] Joe 1
[] Joe 2
[] Mark 3
[] Mark 4
[X] Mark 5
这应该是
customerArray["Mark"]
我越来越糊涂了如何处理重复的名称并且如果所述n去掉它们ame不再被选中。任何帮助将不胜感激。
答
一个简单但并非特别有效的解决方案是,每次在添加元素之前,检查它是否已经存在于数组中。如果不是,按照预期添加它,如果是的话,什么也不做。
const array = [];
function add(element, arr) {
if (!arr.includes(element)) { // make sure element doesn't already exist before you add it
arr.push(element);
}
}
add("John", array);
add("John", array);
add("Mark", array);
add("Mark", array);
add("Mark", array);
console.log(
array // ["John", "Mark"]
);
去除会有类似的方式来完成。在尝试删除之前,您必须检查是否有任何要删除的内容。
const array = ["John"];
function remove(element, arr) {
let idx = arr.indexOf(element);
if (idx !== -1) { // make sure element exists before removing it
arr.splice(idx, 1);
}
}
remove("Mark", array); // does nothing
console.log(
array // ["John"]
);
remove("John", array); // removes John
console.log(
array // []
);
此用例的清洁器的方法是使用一个数据结构用于保持唯一值,这是一个Set。
const set = new Set();
set.add("John");
set.add("John");
set.add("Mark");
set.add("Mark");
set.add("Mark");
console.log(
[...set.values()] // ["John", "Mark"]
);
从一组的移除也是相当简单和引擎盖下处理的细节。
const set = new Set(["John"]);
set.delete("Mark"); // does nothing
console.log(
[...set.values()] // ["John"]
);
set.delete("John"); // removes "John"
console.log(
[...set.values()] // []
);
你尝试过这么远吗?你有什么错误吗?我们需要更多信息。 –