В метод даю массив который состоит из нечетных(четных) чисел, но 1 из чисел четный(нечетный) в каждом массиве. Метод должен вернуть единственное четное(нечетное) число заданного массива соответственно. Я всякие методы массива использовала чтобы решить задачу. Но не получилось.
P.S. Пожалуйста не пишите готовое решение, просто дайте подсказку чтоб сама смогла решить.
function Outlier(){
this.method=function(arr)
{
for(let i=0; i<arr.length; i++){
if(arr[i]%2==0){
return arr[i]%2!=0; //Проблема больше всего вот здесь
}
if(arr[i]%2!=0){
return arr[i]%2==0; //Проблема .... И здесь
}
}
} }
let array1=[11, 3, 5, 9, 29, 4];
let array2=[2, 4, 6, 180, 7];
let outlier=new Outlier();
let out=outlier.method(array1);
// outlier.method(array2);
console.log(out);
Version 2
function Outlier(){
this.method=function (arr)
{
for(let i=0; i<arr.length; i++){
if(arr[0]%2==0&&arr[1]%2==0||arr[2]%2==0)
return "even"
if(arr[0]%2!=0&&arr[1]%2!=0||arr[2]%2!=0)
return "odd"
}
} }
let array1=[3, 4, 5, 9, 29];
let array2=[7, 2, 4, 6, 180];
let outlier=new Outlier();
let out=outlier.method(array1);
let out1= outlier.method(array2);
console.log(out); //odd
console.log(out1); //even
В этом let array2=[7, 2, 4, 6, 180]; массиве вне зависимости где находится нечетный элемент if(arr[0]%2==0&&arr[1]%2==0||arr[2]%2==0) return "even" правильно работает
А в этом let array1=[3, 4, 5, 9, 29]; массиве когда четный элемент имеет индекс [2] if(arr[0]%2!=0&&arr[1]%2!=0||arr[2]%2!=0) return "odd" неправильно работает Почему так?
Version 3 Проверка - что есть минимум 3 элемента и что нет строк. Там конечно не проверка на содержание любой строки(только заданной).
function Outlier(){
this.method=function(arr) {
if(arr.length>=3&&arr.join(" ").search(/ab*c/)==-1){
let reminder = (arr[0]+arr[1])%2==1 ? 1-arr[2]%2 : 1-arr[0]%2;
for(let i=0; i<arr.length; i++){
if(arr[i]%2==reminder){
return arr[i];
}
}
}
else{
return `Array's length <3 or Array has the string(s).
Please add number(s) to the array or delete the string(s)`;
}
}
}
let array1=[11, 3, 5,"cbbabbbbcdebc,", 9, 29, 4];
let array2=[2, 4, 6, 180, 7, 20];
let outlier=new Outlier();
let out=outlier.method(array1);
console.log(out);
out=outlier.method(array2);
console.log(out);
Version 4 Проверка каждого элемента массива - что нет строк и что есть минимум 3 элемента в массиве
function Outlier(){
this.method=function(arr) {
for(let i=0; i<arr.length; i++){
if(arr.length>=3&&arr.join(" ").search(/ab*c/)==-1) {
let reminder = (arr[0]+arr[1])%2==1 ? 1-arr[2]%2 : 1-arr[0]%2;
for(let i=0; i<arr.length; i++){
if(arr[i]%2==reminder){
return arr[i];
}
}
}
else{
return `Array's length <3 or Array has the string(s).
Please add number(s) to the array or delete the string(s)`;
}
}
}
}
let array1=[11, 3, 5,"cbbabbbbcdebc,", 9, 29, 4];
let array2=[2, 4, 6, 180, 7, 20];
let outlier=new Outlier();
let out=outlier.method(array1);
console.log(out);
out=outlier.method(array2);
console.log(out);
function Outlier(){
this.method=function(arr) {
let reminder = (arr[0]+arr[1])%2==1 ? 1-arr[2]%2 : 1-arr[0]%2;
for(let i=0; i<arr.length; i++){
if(arr[i]%2==reminder){
return arr[i];
}
}
}
}
let array1=[11, 3, 5, 9, 29, 4];
let array2=[2, 4, 6, 180, 7, 20];
let outlier=new Outlier();
let out=outlier.method(array1);
console.log(out);
out=outlier.method(array2);
console.log(out);
let reminder = (arr[0]+arr[1])%2==1 ? 1-arr[2]%2 : 1-arr[0]%2;
определяет, какой остаток будем искать. Если сумма первых двух нечётна, то требуемый элемент среди них, и нужная чётность не такая, как у третьего элемента. А если чётна, то их чётность одинакова и не такая, как нужна, получаем требуемую чётность не такую, как у первого элемента. Ну а остальное - очевидно.
По-хорошему, надо добавить ещё проверок - что есть минимум 3 элемента, что нет строк или ещё какой дряни...
Можно попробовать использовать метод массива .some(); Он возвращает true, при первом совпадении с заданным условием.
if(arr[i]%2==0){
return arr[i]%2!=0; //Проблема больше всего вот здесь
}
if(arr[i]%2!=0){
return arr[i]%2==0; //Проблема .... И здесь
}
мне (и Вам тоже) не нранятся эти строчки. для начала приведите их к человеческому языку:
var val = arr[i];
if (chetnoe(val))
return false;
if (!chetnoe(val))
return false;
это неверный алгоритм. он всегда возращает false. но он позволяет сделать шаг к правильному.
у вас уже есть какой-то код, вспомогательные функции и вы можете строить алгоритм имея такие "кубики".
подумайте, как бы вы решили свою задачу, имея в арсенале функцию chetnoe (возращает true, если аргумент четный).
попробуйте факт четности обозначить 1, а нечетности -1. что потом можно сделать с этими числами?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Доброе утро!) Подскажите пожалуйста, у меняproduct__item используется в нескольких блоках, как указать в js, что добавлять класс нужно лишь тому у кого...
Я сохраняю джквери объект который содержит в себе кучу других элементов, в JSON, что-бы хранить его в локальном хранилище, и при загрузке(обновлении)...
Никак не могу совладать с одним из элементов при вёрсткеПрошу, собственно, Вашей помощи
Мне нужно создать форму в которой будет кнопка типа Submit и два текстовых поля, в которые можно будет ввести 2 числа, и по нажатию кнопки должен...