2016-05-16 4 views
-1

Я работаю над проблемой. Я не знаю правильного вопроса, чтобы спросить, чтобы решить эту проблему. Я получил то, что кажется требуемым результатом, но проблема проверки для решения не работает. Я не уверен, правильно ли я его решу. В основном мне присваивается массив, и я должен отфильтровывать элементы из этого массива, нарезая определенные ингредиенты.разрезать различные массивы и вернуть выбранные значения

вопрос: «Мы используем только те элементы, о которых говорит нам инструкция. Итак, нам нужно создать срез данного массива элементов (взятых с самого начала), чтобы они напоминали только те элементы, которые мы используем. инструкция ничего не говорит, мы берем только первый элемент ».

var hammerIngredients = ['iron', 'granite', 'copper']; 
var spearIngredients = ['iron', 'granite', 'copper']; 
var panIngredients = ['iron', 'granite', 'copper']; 
take(hammerIngredients); // returns ['iron'] 
take(spearIngredients, 2); // returns ['iron', 'granite'] 
take(panIngredients, 3); // return ['iron', 'granite', 'copper'] 

«Если команда говорит, чтобы использовать более элементов в списке, мы используем все элементы массива. Если команда говорит не использовать никаких элементов, мы возвращаем пустой массив.»

var plateIngredients = ['iron', 'granite', 'copper']; 
take(plateIngredients, 0); // returns [] 

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

function take(ingredients, slicer) { 

if (arguments.length === 1) { 
    slicer = 1; 
} 
if (ingredients === hammerIngredients){ 
    return ingredients.slice(0, slicer); 
} else if(ingredients === spearIngredients) { 
    return ingredients.slice(0,slicer); 
} else if (ingredients === panIngredients) { 
    return ingredients.slice(0,slicer); 
} else if (ingredients === plateIngredients) { 
    return ingredients.slice(0,slicer) 
} else { 
    return; 
} 
} 

И я понятия не имею, почему. Помоги пожалуйста!

ответ

1

У вас нет логики, если параметр slicer равен 0, и в этом случае вам нужно вернуть пустой массив.

Поместите эту линию там, и он должен работать, основываясь на требованиях, которые Вы дали:

if (slicer === 0) { 
    return []; 
} 
+0

Если slicer = 0, я должен вернуть только первый элемент, а не пустой массив. – JonathanMitchell

+0

В примере, который вы опубликовали, slicer of zero возвращает пустой массив ... take (plateIngredients, 0); // возвращает [] – JordanHendrix

+0

Да, но отсутствие слайсера будет означать, что вы берете только первый элемент. Который в названии молотка будет только железным. – JonathanMitchell

0

Вы в настоящее время код работает только тогда, когда один из этих трех точных массивов используются. Создает ли код проверки и использует только те массивы?

Ваш код не обязательно должен быть привязан к существующим массивам компонентов. После установки значения slicer по умолчанию вы можете просто:

return ingredients.slice(0,slicer); 
+0

Все они делают то же самое, за исключением того, что они нарезают разные суммы. – JonathanMitchell

+0

поэтому я могу использовать логику на slicer, чтобы изменить, насколько я должен нарезать, я считаю, что мне нужно сделать это только для молотка, копья, кастрюли, тарелки. – JonathanMitchell

+0

Я имею в виду, что это будет «пан» + «ингредиенты» или «молот» + «ингредиенты». Я пытаюсь выяснить, есть ли лучший способ решить это. – JonathanMitchell

Смежные вопросы