我如何检查下面的两个对象是否有匹配的元素?如果它们有匹配的元素..我希望将匹配的元素存储在一个名为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 = [];
到目前为止,我设法匹配了这两个对象,如果匹配,则得到一个true或一个false,但我还希望将匹配值存储在一个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' ]
或者您可以使用set.has
ES6集:
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' ]
集合的优点是它更快,因为它只包含唯一的元素(如果存在任何重复的元素)。然而,差别可能很小,因为这两种解决方案基本上是同一件事。
你能做到的
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 = [];
one.forEach(date => {
if(two.includes(date)) {
storeHere.push(date);
}
}