我正在尝试映射一些数据,从字符串映射到布尔值(如果可能)。
假设我有这个数组(所有的值都是字符串类型)。
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);
});
这是我粗略的计划。这是解决这个问题的好方法吗?或者有一种更简单的方法可以做到这一点吗?
答案 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' ]