//方法一:遍历,缺点是时间复杂度为O(N^2) function add(arr,target){ let obj=[]; for(let i=0;i<arr.length;i++){ for(let j=i+1;j<arr.length;j++){ if(arr[i]+arr[j]==target){ obj.push(i); obj.push(j); break; } } } return obj } console.log(add([1,2,3,4],4)) //方法二:用Map记录遍历过的数字及其索引,减少时间复杂度 function add(arr,target){ const map=new Map(); for(let i=0;i<arr.length;i++){ const de=target-arr[i]; if(map.has(de)){ return [map.get(de),i] } map.set(arr[i],i) } } console.log(add([1,2,3,4],4))