2015-10-21 2 views
0

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

для нелогич- здесь разделить значение массива

var myArr = val.split(/(\s+)/); 

и если массив вместо 2 пуст, мне нужно использовать метод как следующий проход пустой массив во втором арг

var val = process.run(myArr[0], [], options); 

если массив мн.ч. Туз 2 не пусто мне нужно передать его как следующий

var val = process.run(myArr[0], [myArr[2]], options); 

Второй аргумент является массивом внутри Arry со значением 2

есть хороший способ сделать это вместо того, чтобы, если на методе?

+1

, что случилось с 'myArr [2] .lenght> 0? [myArr [2]]: [] '? – Dalorzo

+1

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

+0

@DaveNewton - не уверен, что я понял, что вы имеете в виду, можете ли вы привести пример? –

ответ

0

Я бы создал функцию, как Dave Newton recommends. Я мог бы взять первоначальный val и options в качестве аргумента и возвращает результат process.run:

function runProcess(val, options) { 
    var myArr = val.split(/(\s+)/); 
    var argArray = []; 
    if(myArr[2]) { 
     argArray.push(myArr[2]); 
    } 
    return process.run(myArr[0], argArray, options); 
} 

Поскольку я не знаю, что функция делает точно, имя функции и переменных довольно произвольно. Не стесняйтесь изменять их в соответствии с вашими потребностями.

0

Если myArr[2] плоский массив и всегда будет плоской, то почему бы не ...

var val = process.run(myArr[0], [].concat(myArr[2]), options); 
+0

из OP - 'myArr' - результат для split, поэтому это массив строки, и если' myArr [2] '- пустая строка, вы передаете' [""] 'вместо' [] ' – Grundy

+0

Где это в OP ? Я вижу, где он говорит, если 'myArr [2]' пуст, то пустой массив. – bflemi3

+0

'var myArr = val.split (/ (\ s +) /);' я думаю, здесь ясно :-) [_The ** split() ** метод разбивает объект String на массив строк, разделяя строку на подстроки ._] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/split) – Grundy

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