JavaScript中的条件数组格式

时间:2014-11-17 14:38:16

标签: javascript arrays

我有一个包含文本字符串的数组:

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"]

3 个答案:

答案 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>'
});

更新了小提琴:http://fiddle.jshell.net/r1hvbjs5/2/

答案 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;
    }
});

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

答案 2 :(得分:1)

您可以使用Array.prototype.map - 它会创建一个新数组,其结果是在此数组中的每个元素上调用提供的函数。

考虑您的变量名为condition

myarray.map(function(el){
 return el.indexOf('/') > -1 ? el.split('/')[condition ? 0 : 1] : el;
});