2017-02-11 3 views
0

The Link (you'll have to sign up)Повторные неудачные испытания для: Данный объект и ключ, обратный массив, содержащий элементы в массиве, расположенных в данном ключе, что встречаются условия

Хотя мой код возвращает ожидаемый результат, я получаю неудачные испытания для проблема. Является ли проблема с тестом или с моим кодом?

Проблема ...

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

  • Если массив пуст, верните пустой массив.
  • Если массив не удовлетворяет условиям, верните пустой массив.
  • Если свойство заданного ключа не является массивом, верните пустой массив.
  • Если в ключе нет свойства, верните пустой массив.

Состояние: элементы менее 100.

Кодекса

// expected output -> [20, 50, 0, 16] 

var obj = { 
    key: [150, 20, 50, 100, 0, 16] 
}; 



function getElementsLessThan100AtProperty(obj, key) { 
    var arr = []; 

    for (var i in obj.key){ 
    if(obj.key[i] < 100){ 
     arr.push(obj.key[i]); 
    } 
    } 
    return arr; 
} 

getElementsLessThan100AtProperty(obj, 'key')// [20, 50, 0, 16] 

Failed тестовое сообщение

should return an array containing all the elements less than 100 in the array located at key 

Expected to equal 20,50,0,16. 

Что дает ?? Я что-то пропустил здесь или неправильно?

+1

Похоже, что тест виноват во мне. Вы должны проверить, является ли ожидаемый результат массивом. – davidatthepark

+0

Показать код вашего тестового и удаленного аргументов 'key' не используется. – jtabuloc

+0

Вот что я подумал и о аргументе «ключ», это не обязательно. Код выхода теста недоступен. Тест ожидает массив. Если я жестко закодирую возврат функции с ожидаемым выходом в виде массива, эта часть теста проходит, но тест с пустым массивом явно терпит неудачу. Когда я использую оператор if и возвращаю жесткий массив или пустой массив, он терпит неудачу. Это странно? – nSideOut

ответ

0

Если у вас есть функция, которая возвращает массив, вам нужно сохранить этот массив.

Так что в вашем случае, ваша последняя строка должна быть что-то вроде:

var arr = getElementsLessThan100AtProperty(obj, 'key');

arr теперь держит отфильтрованный массив (или, возможно, пустой массив, если условия не выполняются).