Если условие против l oop один пункт - PullRequest
1 голос
/ 15 января 2020

Мне было просто любопытно, стоит ли иметь условие, если перед зацикливанием какого-либо массива в 90% будет массив из 1 элемента? Пример кода:

const a = [3];
const aLength = a.length;
if(aLength > 1) {
    for(let i = 0; i < aLength; i++) {
        func(i);
    } 
} else {
    func();
}

function func(position = 0) {
  console.log('hi' + position);
}

Ответы [ 2 ]

1 голос
/ 15 января 2020

Я согласен с комментарием Федерико, в данном случае наиболее читаемым является сингл для l oop.

Кроме того, даже если вы повторно его используете, нет особого смысла извлекать a.length в aLength


const a = [3];
for(let i = 0; i < a.length; i++) {
    func(i);
} 

function func(position) {
  console.log('hi' + position);
}

Предупреждение: очень личная перспектива, вы также можете достичь такого же уровня ясности и с комментариями.

Ну, если только в случае с одним элементом нет очень специфического c значения в вашем домене. В этом случае я бы разделил их двумя функциями с очень конкретными c именами следующим образом:

const a = [3];
if(a.length > 1) {
    handleMultiple(a);
} else {
    handleSingleAndWhyItIsASpecialCase(a)
}

handleMultiple(array) {    
    for(let i = 0; i < array.length; i++) {
        func(i);
    } 
}

handleSingleAndWhyItIsASpecialCase(array) {   
    func();
}

function func(position = 0) {
  console.log('hi' + position);
}

Как сказал Хамид ниже, вы можете легко превратить его в oneliner:

[45,63,77].forEach((element, index) => console.log(index));

Попробуйте использовать forEach вместо map, чтобы прояснить свои намерения.

1 голос
/ 15 января 2020

Напишите чистый код и сделайте всех счастливыми.

вы можете исключить, если и l oop:

   const a=[5,6,3]
   a.forEach((value,index)=>console.log('hi'+index));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...