Javascript 是否在没有嵌套循环的两个数组之间进行检查和匹配?
我有两个数组,我想检查和匹配两个数组之间的值,但不使用嵌套for循环。可能吗Javascript 是否在没有嵌套循环的两个数组之间进行检查和匹配?,javascript,data-structures,Javascript,Data Structures,我有两个数组,我想检查和匹配两个数组之间的值,但不使用嵌套for循环。可能吗 ISO system date: [ '2020', '06', '27' ] Date from System: [ '06', '27', '20' ] 我试过这个: function getFormat(isoDateArr, sysDateArr, sysDateFormat) { for (let i = 0; i < isoDateArr.length; i++) {
ISO system date: [ '2020', '06', '27' ]
Date from System: [ '06', '27', '20' ]
我试过这个:
function getFormat(isoDateArr, sysDateArr, sysDateFormat) {
for (let i = 0; i < isoDateArr.length; i++) {
for (let j = 0; j < sysDateArr.length; j++) {
if (isoDateArr[i].includes(sysDateArr[j])) {
createFormat(sysDateArr, sysDateFormat, i, j);
break;
}
}
}
}
函数getFormat(isoDateArr、sysDateArr、sysDateFormat){
for(设i=0;i但是我想不出没有嵌套循环如何实现它?您可以构建真正的ISO日期字符串并进行比较
const
isEqual=(iso,系统)=>`20${iso.join('-')}`==`20${system[2]}-${system[0]}-${system[1]}`,
iso=['20','06','27'],
系统=['06','27','20'];
日志(isEqual(iso,系统))代码>您可以通过使用这些数组构建datetime对象来完成此操作,并将它们转换为datetime toDateString以检查质量:
var isoArray = [ '2020', '06', '27' ];
var systemArray = [ '06', '27', '20' ];
var isoArrayDate = new Date(isoArray.join("-"));
console.log(systemArrayDate.toDateString() == isoArrayDate.toDateString());
如果月和日被切换怎么办?@NinaScholz如果你需要i
和j
(虽然不知道createFormat()
实际上做了什么,但很明显,i
和j
都作为参数传递给它),你需要某种循环。事实上,includes()
也是一个循环。getFormat()
首先应该做什么?它获取两个数组和未知的第三个参数。然后,如果在第二个数组中找到了第一个数组中的每个元素,它将在调用带有匹配项索引的createFormat()
之后,测试第一个数组中的每个元素,并在第一个匹配项处断开s。然后返回未定义的
/nothing…->@tevemadar用更多代码更新了问题