将字符串1和0映射为true或false

时间:2014-05-19 12:02:21

标签: javascript

我正在尝试映射一些数据,从字符串映射到布尔值(如果可能)。

假设我有这个数组(所有的值都是字符串类型)。

var values = array["1", "0", "0", "1", "SomethingElse"];

我想将1s映射为true,将0映射为value,而SomethingElse只返回自身。

我的想法是拥有一个地图对象

map = {
    1: true,
    0: false  
};

然后有一个包装函数检查是否设置了密钥,如果没有返回自己。像这样的东西

function mapValue(val) {
    return (isset(map[val])) ? map[val] : val;
}

var newValues = [];
angular.forEach(values, function(val, key) {
    newValues[key] = mapValue(val);
});

这是我粗略的计划。这是解决这个问题的好方法吗?或者有一种更简单的方法可以做到这一点吗?

1 个答案:

答案 0 :(得分:3)

您可以使用Array.prototype.map功能,例如

var values = ["1", "0", "0", "1", "SomethingElse"],
    map    = { 1: true, 0: false };

console.log(values.map(function(currentItem) {
    return map.hasOwnProperty(currentItem) ? map[currentItem] : currentItem;
}));
# [ true, false, false, true, 'SomethingElse' ]