Javascript:为什么.map方法返回undefined



我正在使用.map在leetcode中解决这个问题方法,但不知何故它返回undefined。有人能解释一下为什么会这样吗?我读了文档,上面说.map通常返回一个数组。

var twoSum = function (nums, target) {
for (let i = 0; i < nums.length; i++){
const num = nums[i];
nums.slice(i+1).map((element) => {
if (num + element === target){
return [i, nums.indexOf(element, i+1)];
}
});
}
}

只是为了补充,这就像一个初学者的例子,我们可以使用两个指针模式。

应用两个指针的第一个设置是对数组进行排序。

然后取两个指针第一个从0开始第二个从最后索引

开始遍历循环并检查目标,并相应地增加和减少指针

var twoSum = function(nums, target) {
nums.sort((a,b) => a-b )

var startingIndex = 0

var lastIndex = nums.length-1;

while(startingIndex<lastIndex){

if(nums[startingIndex] + nums[lastIndex] === target){
console.log(nums[startingIndex], nums[lastIndex])
startingIndex++;
lastIndex--;
}

if(nums[startingIndex] + nums[lastIndex] < target){
startingIndex++;
}

if(nums[startingIndex] + nums[lastIndex] > target){
lastIndex--;
}
}


};
console.log(twoSum([2, 7, 20, 13, 15], 33));

您可以在这里使用Map来有效地实现结果

var twoSum = function(nums, target) {
const map = new Map();
for (let i = 0; i < nums.length; ++i) {
if (map.has(nums[i])) return [map.get(nums[i]), i];
else map.set(target - nums[i], i);
}
};
console.log(twoSum([2, 7, 11, 15], 9));