#javascript #arrays #undefined
#javascript #массивы #не определено
Вопрос:
twoSum, должен возвращать индексы целых чисел, которые в сумме составляют цель: Ввод: nums = [2,7,11,15], target = 9 Вывод: [0,1] Вывод: поскольку nums[0] nums[1] == 9, мы возвращаем [0, 1] .
Я новичок в JavaScript и не понимаю, почему это возвращает undefined. После нескольких тестов я заметил, что он даже не входит во 2-й forloop, однако, когда я написал это на python, он работает отлично
var twoSum = function(nums, target) {
for (let i = 0; i < nums.length; i ) {
if (nums[i] >= target) {
continue;
}
for (let j = i; j < nums.legth; j ) {
if (nums[j] >= target) {
continue;
}
if (nums[i] nums[j] === target) {
const ans = [i, j]
return ans;
}
}
}
};
console.log(twoSum([2,7,11,15],9));
любая помощь будет оценена
Комментарии:
1. у вас есть отрицательные значения в массиве?
2. Да, у вас могут быть отрицательные значения в массиве. Но даже в этом случае он не входит во 2-й цикл
Ответ №1:
Вы допустили опечатку. Исправьте legth
length
во втором цикле.
var twoSum = function (nums, target) {
for (let i = 0; i < nums.length; i ) {
if (nums[i] >= target) {
continue;
}
for (let j = i; j < nums.length; j ) {
if (nums[j] >= target) {
continue;
}
if (nums[i] nums[j] === target) {
const ans = [i, j];
return ans;
}
}
}
};
console.log(twoSum([2, 7, 11, 15], 9));
Комментарии:
1. @Noa Yesa Moshesa, можете ли вы принять этот ответ, если он работает?
2. для ввода данных [2, 7, 11, 15], 9 => результат должен быть [0,1], так как вы добавляете 2 7, чтобы получить 9, и они являются местами в индексе 0 и 1
Ответ №2:
Я вижу, что это старый вопрос, но все же…
У вас есть вложенные циклы, и это может быть очень запутанным. Один из способов, который я бы посоветовал вам изучить, — это определить ваши переменные в основной области действия функции, потому что иначе вы ничего не возвращаете;
Но я бы предпочел посоветовать вам использовать Array.reduce(), как это принято в настоящее время. Вот мое решение в leetcode:
var twoSum = function(nums, target) {
let acc = nums.reduce((acc, curr, currIndex, array) => {
array.forEach((number, index) => {
if(number curr === target amp;amp; index !== currIndex) {
acc = [currIndex, index];
}
})
return acc;
}, []);
return acc.sort();
};