2015-03-18 3 views
0

Моя цель - определить, пусто ли поле name.
Моего код возвращает эту ошибку:Как определить, пустое или пустое поле в массиве Javascript?

"object is not a function'.

Это разрешенная, потому что я изначально использовал (name) не [name] в if заявления

function notEmptyOrNull() { 
    var name1 = "Sherlock"; 
    var name2 = "Watson"; 
    var name3 = ""; 

    var namesArray= ["Ben", "Lucy", "Watson", "Sherlock"]; 

    if (namesArray[name1] !== null) { // resolved error 

     console.log(name1); 
     return true; 
    } 
    return false; 
} 
notEmptyOrNull(); 

Обновленного код:
if (namesArray(name) к if (namesArray[name] который разрешен ошибке ,

Но когда я тестировал на name3, которые я изменил на «пустую строку» = «»

Как это сделать?

В инструментах Chrome Dev я хотел бы видеть результат как истинный или ложный для каждого.

Я также хотел бы выводить данные каждого поля.

Опять же, это довольно просто, но я все еще разбираюсь в этом.

Я знаю, что мне не хватает разделов кода для этого.

+0

Массив не является функцией, вы не можете делать 'namesArray()' (кроме старого IE), вы делаете 'namesArray [name1]'! – adeneo

+0

И вы, вероятно, хотите 'if (namesArray.indexOf (name1) === -1)' anyway – adeneo

+0

wow. это было быстро и легко исправить. Я пытаюсь сделать это для name2, который я переименовал с опечаткой, чтобы вернуть false. Благодарю. – shareyourpeace

ответ

0

Вы неправильно вызываете значения массива. «()» Используются для вызова функции, чтобы получить элемент из массива вы должны использовать «[]»

Как это:

if (namesArray[name1] !== null) { 

P.D. На самом деле то, что я думаю, что вы хотите найти, если имя ВНУТРИ массива, в этом случае вы должны использовать этот метод:

if (namesArray.indexOf(name1) !== -1) 

Вы можете проверить документацию here

+1

не будет, так как это не ассоциативный массив. Для поиска массива должна быть функция indexOf. – Radio

+0

@adeneo Эта нить заняла обороты. Мой первоначальный вопрос состоял в том, чтобы проверить «если имя равно null». Поток начал предлагать способы тестирования «если имя существует в массиве. Ваш исходный ответ правильный, но я не могу нажимать на стрелку для подтверждения вашего ответа. также. Когда я изменяю это поле как пустую строку name1 = "" Я не возвращаю -1 или false в консоли. " Вы знаете, почему? – shareyourpeace

+0

@JLRishe привет. если у вас есть шанс, вы можете просмотреть этот пост, особенно сообщение прямо над этим мной. Благодарю. – shareyourpeace

1

насчет namesArray.indexOf(name1) > -1 Как это вы не проверяла NULL, вы проверяете, если значение существует в массиве

0

Использование Array.indexOf()

Заменить:

if (namesArray(name1) !== null) { ... 

С:

if (name1.indexOf(namesArray) !== -1) { ... 

Array.indexOf() возвращает -1, если элемент не может быть кладезем в массиве или иначе, индекс элемента внутри массива (где 0 представляет собой первый элемент).