我有一个包含文本字符串的数组:
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 :(得分: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>'
});
答案 1 :(得分: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;
}
});
答案 2 :(得分:1)
您可以使用Array.prototype.map
- 它会创建一个新数组,其结果是在此数组中的每个元素上调用提供的函数。
考虑您的变量名为condition
:
myarray.map(function(el){
return el.indexOf('/') > -1 ? el.split('/')[condition ? 0 : 1] : el;
});