You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取两个JavaScript数组中的匹配值?

获取两个数组匹配值的最佳方式

1. 获取所有匹配值(替代find)

你的当前代码用array1.find(...)只会返回第一个匹配的元素,如果要获取所有匹配项,应该使用filter方法:

var array1 = ["2023/03/07", "2023/03/17", "2023/03/27"];
var array2 = [];
var startDate = "2023/03/05";
var endDate = "2023/03/15";
var dateMove = new Date(startDate);
const endDateObj = new Date(endDate);

// 生成日期范围数组(修正重复声明strDate的问题)
while (dateMove < endDateObj) {
  var strDate = dateMove.toISOString().slice(0, 10);
  array2.push(strDate);
  dateMove.setDate(dateMove.getDate() + 1);
}

// 获取所有匹配值
const matches = array1.filter(val => array2.includes(val));
console.log(matches); // 输出: ["2023/03/07"]

2. 性能优化(大数据量场景)

如果数组元素较多,array2.includes(val)的时间复杂度为O(n),可以把array2转换成Set,将查询时间降到O(1),提升效率:

const array2Set = new Set(array2);
const matches = array1.filter(val => array2Set.has(val));

3. 日期比较的严谨性提示

原代码用字符串比较strDate < endDate在格式统一(YYYY/MM/DD)的情况下可行,但更严谨的方式是直接比较Date对象,避免因格式不一致导致的错误,比如上面代码中改用dateMove < endDateObj作为循环条件。


内容的提问来源于stack exchange,提问作者Đoàn Hiếu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 05:38:22