/**
  * 
  * @param numbers int整型一维数组 
  * @param target int整型 
  * @return int整型一维数组
  */
function twoSum( numbers ,  target ) {
    // write code here
  
   
    let arr = numbers,arr1 = [];
    try {
      arr.map((ele,k) => {
      arr.map((ment,y) => {
      if(ele+ment == target&&k!=y){
        console.log(ele,k,ment,y)
        arr1.push(k+1)
        arr1.push(y+1)
        throw new Error('end')
      }
    });
    });
    } catch (e) {
      if(e == 'end'){
        return;
      }
    }
    
    return arr1;
}
module.exports = {
    twoSum : twoSum
};
以上是使用es6新增的map的方法,可以把map换成forEach,some这些,都是ok的,因为forEach和map都是不能跳出循环的,里面写了break会报错,但是可以些return,但是实际效果是只是阻止了return之下的代码不会执行(单次的),并不是跳出循环,所以需要使用try catch跳出循环。
下面是最简单粗暴的方法,双循环
/**
  * 
  * @param numbers int整型一维数组 
  * @param target int整型 
  * @return int整型一维数组
  */
function twoSum( numbers ,  target ) {
    // write code here
  
    let arr = numbers,arr1 = [];
    for(let i =0;i<arr.length;i++){
    for(let j=1;j<arr.length;j++){
      if(arr[i]+arr[j]==target&&i!=j){
        console.log(arr[i],i,arr[j],j)
        arr1.push(i+1)
        arr1.push(j+1)
        return arr1;
      }
    }
    }
}
module.exports = {
    twoSum : twoSum
};
每次找js题解都没有,大佬们加油啊!淦它