我有来自两个数组的联系人列表。有些元素可能相同,但我需要知道哪个数组具有唯一值并将这些唯一值保留在该数组中。换句话说,我想跟踪它们来自哪个数组的唯一值。这是我到目前为止的意大利面条代码:
for (var i = 0; i < emailNews.length; i++)
{
for (var j = 0; j < emailHealth.length; j++)
{
if (emailNews[i] == emailHealth[j]) {
$('#userList').append(descriptionNews[i] + '<td><span style="margin-right: 5px;">Advanced</span><input type="checkbox" name="advanced" id="advancedCheck" checked></td><td><button type="button" class="btn btn-danger btn-sm btn-user-delete" id="' + userLogin + '" >Delete</button></td></tr>');
} else {
console.log(descriptionHealth[j]);
$("#userList").append(descriptionHealth[j] + '<td><button type="button" class="btn btn-danger btn-sm" id="deleteEnd">Delete</button></td></tr>');
}
}
}
最佳答案
您的描述有点令人困惑,但据我了解,您有两个数组,并且您希望知道每个数组中的唯一项目(不在另一个数组中的项目)。
因此,给定数组 a
和 b
,您可以创建两个仅包含唯一数组的新数组。
// unique--v---------------------v
var a = ["foo", "bar", "baz", "zing"];
// unique--v
var b = ["oof", "bar", "baz"];
var unique_a = a.filter(item => !b.includes(item));
var unique_b = b.filter(item => !a.includes(item));
console.log("Unique in `a`: %s", JSON.stringify(unique_a));
console.log("Unique in `b`: %s", JSON.stringify(unique_b));
现在您有了唯一的值,并且知道它们来自哪个数组,您可以使用这些值执行您需要的操作。
<小时/>如果您想在循环时执行此操作,那也同样简单。只需获取另一个数组并使用当前项对其调用 .includes()
即可。
a.forEach(item => {
if (b.includes(item)) {
// not unique...
} else {
// unique
}
});
<小时/>
如果您需要处理所有项目,请以两种方式分离出唯一的项目,然后还处理共享的项目,创建所有项目的Set
,然后进行迭代。
for (const item of new Set([...a, ...b])) {
var in_a = a.includes(item);
var in_b = b.includes(item);
if (in_a && in_b) {
// not unique
} else if (in_a) {
// unique to 'a'
} else {
// unique to 'b'
}
}
关于javascript - 在两个 JavaScript 数组中查找元素并将每个数组存储为不同的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46495551/