示例 [1,2,3,4,5] 获取和为7的数组。[[2,5], [3, 4]]
给定数组 [1,5,3,2,8,11,4,10,9,15,13,17,20,7,12]
其和为20
假设函数getIndexsum
function getIndexsum (arr, sum) {
let _set = new Set(); //索引下表的set数据
let iArr = []; //最后return的数组
arr.map((val, i) => {
const c = sum - val; //获取差值
const _i = arr.indexOf(c); //差值是否在arr数组中
// 差值存在 且set数据没有存储过 切两个数据索引不相同
if(_i > -1 && !_set.has(i) && _i != i){
_set.add(i); //存储当前的下标
_set.add(_i); // 存储它的差值对应的下标
iArr.push([val, c]); //iArr 内部存储
}
});
return iArr;
};
运行结果
注意这里没有做数组重复的处理