2014-11-17 3 views
0

У меня есть массив с текстовыми строками:Условное форматирование массива в JavaScript

var myarray = ["valueA","valueB","valueC","valueD/valueA","valueE","valueC/valueA"]; 

Некоторые из значений в массиве есть слэш, например, "aaa/bbb". Слэш имеет особое значение для разделения двух значений.

Я хочу получить новый массив с одним значением или другим, основанным на булевой функции.

Например:

var myarray = ["valueA/valueB"]; 
var myNewarray = myFunction(myarray, true); // myNewarray == ["valueA"] 
var myNewarray2 = myFunction(myarray, false); // myNewarray2 == ["valueB"] 

myarray = ["valueA/valueC","valueB","valueD/valueF"]; 
myNewarray = myFunction(myarray, true); // ["valueA","valueB","valueD"] 
myNewarray = myFunction(myarray, false); // ["valueC","valueB","valueF"] 
+0

ли скрипка ссылка имеет ничего общего с вопросом ?! – lonesomeday

+0

Да, я хочу выбрать значение со временем, если у меня есть даже неделя, я выбрал значение 1, если нечетное я выбрал значение 2 ( myarray = [значение1/значение2]) –

ответ

1

Используйте Array.map для вызова функции по каждому элементу и возврата другого значения в зависимости от некоторых условий.

var cond = false; 
var myarray = ["valueA/valueC","valueB","valueD/valueF"]; 
var myNewarray = myarray.map(function(item){ 
    var values = item.split('/'); 
    if(values.length == 2){ 
     return cond ? values[0] : values[1]; 
    } 
    else { 
     return item; 
    } 
}); 

http://fiddle.jshell.net/duw99072/

1

петля Просто через массив и .split() на слэш, если элемент содержит его:

Предполагая, что вы хотите, значение oddWeek (в вашей скрипкой), чтобы определить, левый/правильное значение от косых черт разделенных элементов массива:

var myarray = ["valueA/valueC","valueB","valueD/valueF"]; 
myarray.forEach(function (val, index, array) { 
    if (val.indexOf('/') > -1) { 
     val = val.split('/')[oddWeek]; 
    } 
    output += '<p>' + val + '</p>' 
}); 

Обновленной скрипка: http://fiddle.jshell.net/r1hvbjs5/2/

1

Вы можете использовать Array.prototype.map - это создает новый массив с результатами вызова при условии функции на каждом элементе в этом массиве.

Учитывая переменный называются condition:

myarray.map(function(el){ 
return el.indexOf('/') > -1 ? el.split('/')[condition ? 0 : 1] : el; 
}); 
Смежные вопросы