javascript - 如何检查一个数组是否包含可以在另一个数组中找到的元素并存储它们的值
问题描述
如何检查以下两个对象是否具有匹配的元素?如果他们有匹配的元素..我想将匹配的元素存储在一个名为的空变量中var storeHere = []
。
var one = ["2021-02-25", "2021-02-24", "2021-02-23", "2021-02-22", "2021-02-21", "2021-03-02", "2021-02-11", "2021-02-10"];
var two = ["2021-02-25", "2021-02-25", "2021-02-23"];
var storeHere = [];
到目前为止,我设法匹配了这两个对象,如果有匹配,则得到一个真或假,但我也想将匹配的值存储在一个 emtpy 变量中。
var one = ["2021-02-25", "2021-02-24", "2021-02-23", "2021-02-22", "2021-02-21", "2021-03-02", "2021-02-11", "2021-02-10"];
var two = ["2021-02-25", "2021-02-25", "2021-02-23"];
function ex (alldates, selected) {
return selected.some(function (v) {
return alldates.indexOf(v) >= 0;
});
};
ex(one, two);
解决方案
你有几个选择
您可以使用Array.filter
:
const one = [
"2021-02-25",
"2021-02-24",
"2021-02-23",
"2021-02-22",
"2021-02-21",
"2021-03-02",
"2021-02-11",
"2021-02-10",
];
const two = [
"2021-02-25",
"2021-02-25",
"2021-02-23",
];
// If an element is in two, include it. Otherwise, exclude it.
const storeHere = one.filter((date) => two.includes(date))
console.log(storeHere) // [ '2021-02-25', '2021-02-23' ]
或者你可以使用 ES6 集合Set.has
:
const one = [
"2021-02-25",
"2021-02-24",
"2021-02-23",
"2021-02-22",
"2021-02-21",
"2021-03-02",
"2021-02-11",
"2021-02-10",
];
const two = new Set([
"2021-02-25",
"2021-02-25",
"2021-02-23",
]);
// If an element is in two, include it. Otherwise, exclude it.
const storeHere = one.filter((date) => two.has(date))
console.log(storeHere) // [ '2021-02-25', '2021-02-23' ]
set 的优点是速度更快,因为它只包含唯一元素(如果存在任何重复元素)。但是,差异可能很小,因为两种解决方案基本相同。
推荐阅读
- javascript - Node WritableStream 不直接级联
- linux - 断电期间的最后一条命令
- firebase - “StorageReference”类型的值没有成员“孩子”
- java - 通用 JavaBeanObjectProperty 的未检查分配错误,但 ReadOnlyJavaBeanObjectProperty 没有
- javascript - 是否可以为 android 创建一个带有屏幕覆盖访问权限的 pwa?
- python - 以列表为值的二维字典python
- vis.js - 如何将负日期添加到时间线
- spring-batch - ItemWriter 春季批次中最后处理的项目
- powershell - Windows 7 中未知的 Compress-Archive powershell 命令
- python - Python H5PY IOError:无法打开文件.....错误消息='没有这样的文件或目录'