当前位置: 首页 > 知识库问答 >
问题:

如何检查一个数组是否包含可以在另一个数组中找到的元素并存储它们的值

曹镜
2023-03-14

我如何检查下面的两个对象是否有匹配的元素?如果它们有匹配的元素..我希望将匹配的元素存储在一个名为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);
  

共有2个答案

郝昊东
2023-03-14

你能做到的

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);
   }
}
商璞
2023-03-14

你有几个选择

您可以使用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.hasES6集:

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' ]

集合的优点是它更快,因为它只包含唯一的元素(如果存在任何重复的元素)。然而,差别可能很小,因为这两种解决方案基本上是同一件事。

 类似资料:
  • 问题内容: 我试图遍历2个数组,外部数组则比另一个数组更长。它将循环遍历第一个,如果第二个数组不包含该int,它将返回false。但是我不知道该怎么做。这是我到目前为止所拥有的: 运行时出现此错误: 我想知道是否可以不使用嵌套循环(如上)来完成。我知道我做错了,如果有人可以在此问题上提供帮助,那就太好了。我也不确定要在Java文档中寻找什么类。 问题答案: 您可以检查较大的数组是否包含较小数组中的

  • 问题内容: 我想为数组中的每个值返回一个布尔值,指示它是否在array中。我猜这应该是一个标准程序,但是我找不到有关如何执行此操作的任何信息。我的尝试如下: 但是,我得到了错误: 我使用的是numpy,因此首选使用numpy或标准Python的解决方案。 问题答案: 我相信您可以使用-

  • 问题内容: 我有两个数组,我想检查是否每个元素都在中。如果元素的值在中重复,则该元素的值必须相等。最好的方法是什么? 问题答案: 一种选择是对两个数组进行排序,然后遍历两个数组,然后比较元素。如果在超级袋中未找到子袋候选中的元素,则前者不是子袋。排序通常为O(n *log(n)),比较为O(max(s,t)),其中 s 和_t_是数组大小,总时间复杂度为O(m * log(m)) ,其中m =ma

  • 问题内容: 我在PHP中有两个数组,如下所示: 人: 通缉犯: 如何检查是否 所有 的的 人们 元素是在 通缉犯 阵列? 在此示例中,它应该返回,因为在 通缉犯中 。 问题答案: 您可以使用。

  • 问题内容: 如何检查一个DOM元素是否是另一个DOM元素的子元素?有内置的方法吗?例如,类似: 要么 如果没有,那么有什么想法怎么做?它还需要跨浏览器。我还应该提到,孩子可以嵌套在父级以下的多个级别。 问题答案: 更新: 现在有一种本地方法可以实现此目的。。在评论中也提到了答案。 旧答案: 使用该属性应该可以。从跨浏览器的角度来看,它也是非常安全的。如果已知这种关系是一级的,则可以简单地检查一下: