2016-12-07 3 views
-1

Я не могу определить условие, которое могло бы проверять все 6 чисел. Я пробовал использовать || но это просто беспорядочно, и я знаю, что это неправильно.Как проверить наличие нескольких элементов в массиве - Предупреждение Домашнее задание

Используя следующий массив, создать переменную numThrees со значением [13, 23, 33, 43, 53, 63, 73]

var numArray = [13, 15, 17, 23, 25, 27, 33, 35, 37, 43, 45, 47, 53, 55, 57, 63, 65, 67, 73, 75, 77]; 

var numThrees = []; 

for (i = 0; i < numArray.length; i++) { 
    if (numArray[i] === 13) { 
    numThrees[i] = numArray[i]; 
    }; 
    }; 
document.getElementById('q7').innerHTML = numThrees; 
+1

Принято считать полезные полезные ответы и отметить тот, который наилучшим образом отвечает на ваш вопрос в качестве ответа. Мы обычно щетинимся при выполнении домашних заданий. –

ответ

-2

Преобразование массива в список и использовать Contains

var list = numArray.ToList(); 
if (list.Contains(thing)) 
... 
+2

Вопрос помечен Javascript, а не C#. – Ouroborus

0

вы можете просто проверить, если оставшаяся часть числа с 10 составляет 3, который предназначен для вашего состояния (13,23,33,43,53,63 и 73)

var numArray = [13, 15, 17, 23, 25, 27, 33, 35, 37, 43, 45, 47, 53, 55, 57, 63, 65, 67, 73, 75, 77]; 
 

 
var numThrees = []; 
 

 
for (i = 0; i < numArray.length; i++) { 
 
    if (numArray[i]%10==3) { 
 
    numThrees.push(numArray[i]); 
 
    }; 
 
}; 
 
document.getElementById('q7').innerHTML = numThrees;
<div id="q7"> 
 
    </div>

Надеется, что это помогает

0

Есть несколько способов сделать это. Вот два, которые используют другую логику, чтобы извлечь правильные номера:

Вы можете сделать это вручную так:

var numArray = [13, 15, 17, 23, 25, 27, 33, 35, 37, 43, 45, 47, 53, 55, 57, 63, 65, 67, 73, 75, 77]; 
 

 
var numThrees = []; 
 

 
for(var i = 0; i < numArray.length; ++i){ 
 
    
 
    // Turn the current array element into a string 
 
    var strVal = numArray[i].toString(); 
 
    
 
    // If that string ends with "3" add it to the new array: 
 
    strVal[strVal.length-1] === "3" ? numThrees.push(numArray[i]) : ""; 
 
} 
 

 
console.log(numThrees);

Вы можете использовать Array.prototype.filter метод:

var numArray = [13, 15, 17, 23, 25, 27, 33, 35, 37, 43, 45, 47, 53, 55, 57, 63, 65, 67, 73, 75, 77]; 
 

 
// The Array.prototype.filter method iterates every item in 
 
// a given array and allows you to implement any logic you 
 
// like and return any value from the original array you like 
 
// into a new array that will be a filter of the first one. 
 
var numThrees = numArray.filter(function(element){ 
 
    // Check the current element being iterated for one of 
 
    // a designated set of values and return that element 
 
    // into the filtered array if it is a match. 
 
    switch(element){ 
 
    case 13: 
 
    case 23: 
 
    case 33: 
 
    case 43: 
 
    case 53: 
 
    case 63: 
 
    case 73: 
 
     return element; 
 
    default: 
 
     break; 
 
    } 
 
}); 
 

 
console.log(numThrees);

+0

Голос за два правильных ответа со ссылками ?! –

0

Ваших инструкции немного произвольны, но здесь более эффективный способ сделать это:

var numArray = [13, 15, 17, 23, 25, 27, 33, 35, 37, 43, 45, 47, 53, 55, 57, 63, 65, 67, 73, 75, 77]; 

var numThrees = []; 

for (i = 0; i < numArray.length; i+=3) { 
    numThrees.push(numArray[i]); 
}; 
document.getElementById('q7').innerHTML = numThrees; 

Так как мы можем заметить, что данный массив имеет требуемые значения в определенных индексах, которые равномерно разнесенные кроме того, нет необходимости проходить итерацию по всему массиву.

В ваших указаниях не указывается, можем ли мы это сделать, исходя из предположения, что мы знаем, что находится в исходном массиве и какой индекс. Если это так, то вам нужно итерации по массиву каким-то образом, а затем проверить, содержит ли каждый индекс требуемое значение.

Я предполагаю, что это приемлемое решение.

Редактировать: Основано на моем понимании (и, вероятно, что более эффективно.) Я не думаю, что в этом случае мы должны выполнять итерацию по всему массиву, когда его жестко закодировано. Мы знаем, какие значения находятся в массиве, и в каком положении. Просто случается, что числа, которые вы хотите, равномерно распределены в numArray, что является еще более основанием для того, чтобы не проверять каждое значение для какого-либо условия.

Надеюсь, что это имеет смысл.

0

Вам нужны предметы, оканчивающиеся на 3, или каждый третий элемент в массиве?

Использование массива.Фильтр является наиболее ЭФФЕКТИВНЫМ способом достичь либо:

возврата значений с остатком 3, когда делящегося на 10.

var numArray = [13, 15, 17, 23, 25, 27, 33, 35, 37, 43, 45, 47, 53, 55, 57, 63, 65, 67, 73, 75, 77]; 
 

 
var numThrees = numArray.filter(function(val){ 
 
return val % 10 === 3; 
 
}); 
 

 
console.log(numThrees);

Однако, если вам нужно получить каждый третий элемент в массив, вы можете сделать следующее, которое возвращает элемент, если итератор не имеет остатка при делении на 3

var numArray = [13, 15, 17, 23, 25, 27, 33, 35, 37, 43, 45, 47, 53, 55, 57, 63, 65, 67, 73, 75, 77]; 
 

 
var numThrees = numArray.filter(function(val, i) { 
 
return i % 3 === 0; 
 
}); 
 

 
console.log(numThrees);