Я хотел бы найти пару значений массива, которая дает число, кратное 3, из заданного массива, поскольку в соответствии с данным массивом я получил возможность следовать при однократной итерации. Я пытаюсь добиться того же. но получая больше ценностей. поэтому найдите правильный способ добиться следующего:
1. 1+2 = 3
2. 1+2 = 3
3. 3+6 = 9
4. 2+1 = 3
5. 1+2 = 3
потому что я пробую вот так:
const ar = [1, 3, 2, 6, 1, 2], n = 6, k = 3;
const list = [];
const filter = (num) => {
const v = ar.filter(v => {
if ((num+v) %3 === 0){
list.push([num, v]);
}
});
}
for(let i = 0; i < n; i++) {
const val = ar[i]
filter(val)
}
console.info(list); Но дает больше пар[12], чем требуется. Как с этим справиться? Я понял, что потерял здесь некоторую логику.
Затем вы зацикливаете массив, зацикливаете его снова, чтобы получить результат. Значит, результаты верны. Было бы очень полезно объяснить, что вы пытались сделать, потому что это правильный результат вашей логики. Фильтр не выглядит подходящим методом для ваших целей, но кто знает, что это такое. в 36 итерациях 12 совпадений.
Я смотрю, мой результат должен быть [[1+2] [1+2] [3+6] [2+1 ] [1+2]]
Вы даже не упомянули ничего, связанного с числами, кратными 3, в тексте вашего вопроса, поэтому совершенно неясно, что вам нужно. Пожалуйста, дайте четкое изложение вашей проблемы в текстовой форме, вместо того, чтобы требовать от других догадываться, что вы пытаетесь сделать, на основе ваших примеров и неправильного кода.
Согласно коду, он полностью работает нормально, но, глядя на ваше утверждение, кажется, что вы хотите проверить это кратное 3 от выбранного индекса до индекса, большего, чем он, а не индексов, меньших или равных ему.
@ЯшМахешвари, да. для меня я получаю больше массивов, чем мне нужно.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Просто передайте другое значение в качестве индекса функции фильтра, увеличив его на 1, чтобы она проверяла кратные следующего числа и не включала числа ниже текущего выбранного.
const ar = [1, 3, 2, 6, 1, 2], n = 6, k = 3;
const list = [];
const filter = (num, index) => {
for(let i = index; i < n; i++) {
if ((num+ar[i]) %3 === 0){
list.push([num, ar[i]]);
}
}
}
for(let i = 0; i < n; i++) {
const val = ar[i]
filter(val, i+1)
}
console.info(list); Я пробовал использовать этот подход. у меня это работает лучше.
const ar = [1, 3, 2, 6, 1, 2]
const copy = [...ar];
const result = []
ar.forEach(v => {
copy.shift()
copy.forEach(n => {
if ((v+n) % 3 === 0) {
result.push([v,n])
}
});
});
console.info(result)
Привет! Не могли бы вы обновить свой пост? Не совсем уверен, что вы хотите, чтобы здесь произошло.