#javascript #angular
#javascript #угловой
Вопрос:
У меня возникли некоторые трудности с моим кодом, а именно связанные с кратными.
Во-первых, если basket.length
больше или равно 4 (4, 8, 12, 16…) тогда я хотел бы, чтобы отображался следующий элемент:
<div class="alert alert-danger" role="alert" *ngIf="basket.length % 4 === 0">
You need to select at least {{ getNumberOfMuffins() }} muffins 😊
</div>
Во-вторых, если значение this.basket.length
не равно или больше равно 4 (4, 8, 12, 16…), затем округлите его до следующего значения, кратного 4. Если оно кратно 4, то просто верните число. Например:
если this.basket.length === 3
, то увеличьте до 4, если this.basket.length === 5
затем увеличьте до 8, если this.basket.length === 9
затем увеличьте до 12
getNumberOfMuffins() {
// do some stuff
// return the rounded number of muffins required
}
Ответ №1:
Разделите на 4, вызовите Math.ceil
, затем умножьте на 4:
const getNumberOfMuffins = basketLength => 4 * Math.ceil(basketLength / 4);
console.log(getNumberOfMuffins(4));
console.log(getNumberOfMuffins(5));
console.log(getNumberOfMuffins(6));
Ответ №2:
Наивный и самоописывающийся подход (…3->4, 4-> 8, 5-> 8…):
getNumberOfMuffins() {
return this.basket.length (4 - this.basket.length % 4);
}
Наивный и самоописывающийся подход (…3->4, 4-> 4, 5-> 8…):
getNumberOfMuffins() {
if (this.basket.length % 4 === 0) return this.basket.length;
return this.basket.length (4 - this.basket.length % 4);
}
Отличается и сокращается с использованием округления (…3->4, 4-> 4, 5-> 8…):
getNumberOfMuffins() {
// divide by 4, floor to hole number (|0), add one and "multiply back" with 4
return ((this.basket.length/4|0) 1)*4;
}