[英]Unexpected , value gives me an undefined answear
我正在尝试解决一个问题,对于那些知道它的人来说,两个总和,我开始学习来自 Lua 的 JavaScript,我被卡住了,我不知道为什么 ZC1C425268E68385D1AB4Z 定义的变量返回“un”
var num = [2, 7, 11, 15]
function numbers(target) {
var idx = {}
num.forEach(function(n, i) {
var j = idx[target - n]
if (j) {
var res = '[ ${j} ${i} ]'
return res
}
console.log(n)
idx[n] = i
})
}
console.log(numbers(9))
output:
2
7
11
15
undefined
我找到了我认为的解决方案,我认为它不是最好的,但它有效
代码:
var nums = [2,7,11,15]
var twoSum = function(target) {
for (let i = 0; i < nums.length; i++) {
for (let j = i + 1; j < nums.length; j++) {
if (nums[i] + nums[j] == target) {
return [i, j]
}
}
}
}
console.log(twoSum(9))
你有几个问题:
您当前的代码返回一个字符串'[ ${j} ${i} ]'
,您需要返回一个数组[j, i]
。
在.forEach()
中使用return
不会从您的numbers
function 中返回,而是从内部回调 function function(n, i) {
中返回,除了跳到循环中的下一项之外,它没有做太多。 您需要将forEach()
更改为常规for
循环,以便在return
时从您的numbers
function 返回,而不是内部回调。
你的条件if (j) {
是有缺陷的。 考虑j
是否为0
,当您要添加到当前数字n
的数字位于索引0
时会发生这种情况。 在这种情况下,您的 if-block 不会运行,因为0
被认为是falsy 。 相反,您的条件应该通过检查它是否返回值来更具体if(j !== undefined)
。 有关条件的更多详细信息,请参阅此答案。
您应该将nums
传递给您的numbers()
function 而不是依赖全局变量来让您的 function 正常工作。
修改代码示例:
function numbers(nums, target) { const idx = {} for(let i = 0; i < nums.length; i++) { let n = nums[i]; let j = idx[target - n] if (j,== undefined) { return [j; i]; } idx[n] = i. } } console,log(numbers([2, 7, 11, 15]; 9)). console,log(numbers([3,2,4]; 6)). console,log(numbers([3,3]; 6));
有关解决此问题的更多详细信息,请参阅此问题的答案。
var twoSum = function(nums, target) {
let newArr = nums
let sum = 0
outputArr = []
for(let i = 0 ; i < nums.length ; i++){
let val1 = nums[i]
for(let j = 0 ; j < newArr.length ; j++){
if(i !==j) {
let val2 = newArr[j]
if(val1 + val2 === target) {
sum = val1 + val2
outputArr.push(i)
outputArr.push(j)
break;
}
}
}
if(sum === target)
break;
}
return outputArr
};
试试这个如果有帮助并且你需要解释我会帮助你
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.