前端演算法之 找出某個陣列中的兩個數之和跟目標值相等,並獲取這兩個數在陣列中的位置
阿新 • • 發佈:2019-01-03
此函式,規避了陣列中的某個數值被重複使用的問題,譬如說 傳入的陣列為[2,2,3,4,5]目標值是4,得到值不會是[0,0]而是[0,1]
var twoSum = function(nums, target) { let ayy = []; for (let i=0; i<nums.length; i++) { let initAry = nums.concat();//測出一定要深度拷貝,不然的話下面做切割會影響到原來的陣列 let firstIndex = i, endIndex = ""; let firstValue = nums[i]; initAry.splice(i,1);//剔除當前所選中的元素,防止這個元素被重複使用 endIndex = initAry.findIndex((value, index) => { return value == target-firstValue }); if (endIndex != -1) { ayy.push(i); ayy.push(endIndex +1); break; } } return ayy; }; var acc = [1, 3, 5, 8]; console.log(twoSum(acc, 8))// [1,2]