在Google Apps Script中获取两个数组交集并保存至新数组
问题:JavaScript数组提取公共元素失败的原因及解决方法
你给出的两个数组定义存在关键语法错误,导致后续逻辑无法正常执行:
原始错误的数组定义
arr1 = [aaa,bbb,ccc,ttt,yyy] arr2 = [abc,ttt,def,hij,ew,y,uuu]
在JavaScript中,字符串类型的数组元素必须用单引号(')或双引号(")包裹,否则aaa、bbb这类标识符会被当作未定义的变量,代码会直接抛出ReferenceError,后续的遍历、过滤逻辑根本无法运行。
修正后的解决方案
第一步:修正数组定义
先把数组元素用引号包裹,确保是合法的字符串数组:
const arr1 = ['aaa', 'bbb', 'ccc', 'ttt', 'yyy']; const arr2 = ['abc', 'ttt', 'def', 'hij', 'ew', 'y', 'uuu'];
方法一(for循环遍历)修正后
你的循环逻辑本身是正确的,修正数组后即可得到预期结果:
let Same_items = []; for(let i = 0; i < arr1.length; i++) { if(arr2.indexOf(arr1[i]) !== -1) { Same_items.push(arr1[i]); } } console.log(Same_items); // 输出: ['ttt']
方法二(filter+includes)修正后
你的过滤逻辑同样正确,注意代码里的var Same_itema = [];是多余的变量定义,且变量名拼写有误(Same_itema应为Same_items),修正后执行即可:
const Same_items = arr1.filter(item => arr2.includes(item)); console.log(Same_items); // 输出: ['ttt']
内容的提问来源于stack exchange,提问作者Shaik Naveed
相关产品推荐
相关产品推荐

