Typescript数组映射与筛选器
Typescript array map vs filter vs?
这里有一个typescript方法,它希望遍历一个字符串数组,并返回另一个字符串阵列,其中,与regexp匹配的字符串(格式类似于"[la-la]")将变成"la-la",不匹配的字符串将被删除。因此,如果我的输入数组是:
"[x]", "x", "[y]"
它变成
"x", "y"
这是我的代码:
questions(): string[] {
var regexp = /'[(.*)']/;
return this.rawRecords[0].map((value) => {
console.log(value);
var match = regexp.exec(value);
if (match) {
return match[1];
}
});
}
我的输出是这样的:
"x", undefined, "y"
因为"if(match)"。编写此代码的正确typescript/javascript方式是什么?
仅filter
他们出局:
return this.rawRecords[0].map((value) => {
console.log(value);
var match = regexp.exec(value);
if (match) {
return match[1];
}
});
}).filter(x=>!!x);
map的作用是将函数应用于列表中的每个元素。当正则表达式不匹配时,函数不会返回任何值。因此,在这种情况下,JS可能会使其返回undefined。如果你想删除那些与regexp不匹配的,你应该立即使用filter。
想想函数的名称,你会立刻有更好的理解(将函数映射到列表,并过滤列表)。
我真的相信,有时,我们会尝试比我们应该做的更多的功能
这是怎么回事:
var regexp = /'[(.*)']/;
var records = this.rawRecords[0];
var res = [];
for (var i = 0, len = records.length; i < len; ++i) {
var match = regexp.exec(records[i]);
if (match) {
res.push(match[1]);
}
});
return res;
它不是一行代码,即使我对TypeScript一无所知(你在问题中也问过JavaScript),它也应该比任何函数方法都更高效。
另一个选项是使用reduce()方法,如下所示:
return this.rawRecords[0].reduce((acc, value) => {
console.log(value);
var match = regexp.exec(value);
if (match) {
acc.push(match[1]);
}
return acc;
}, []);
请在JSFIDDLE中检查javascript中等效代码的结果。
我尝试了这个问题,并在下面分享了我的结果。希望这能有所帮助。如果我失败或误解了,请道歉,因为我是打字的新手。
var arr = ["[xy]","x","y"];
var ele =[];
var i;
var op;
var regex = /'[(.*)']/;
var op1 = arr.filter((element)=>
{
op =regex.exec(element);
if(op)
ele.push(op);
else{
ele.push(element);
console.log(op);
}
});
for(i =0;i<ele.length;i++)
{
console.log(ele[i]);
}
相关文章:
- 如何在映射数组中添加换行符
- ng映射方向备选方案
- 无法通过数组映射绑定
- ReactJS映射:如何仅在url变量不为空时呈现html链接
- 使用AngularJS中的筛选器更新给定的表
- 淘汰搜索/筛选
- 使用Scala Play Framework视图中的键检索映射值
- AngularJS单选筛选不适用于Name、Description和Field4复选框值
- Angular JS Filter-通过3个复选框进行筛选
- 淘汰映射;不起作用
- 使用下拉列表筛选列表(ul>li)
- 映射数组ES6时考虑空值
- Lodash映射并返回唯一
- 如何对映射插件创建的敲除对象进行深度复制
- 数组映射和筛选顺序
- 筛选器映射标记不一致
- 如何在链接筛选和映射方法时获取筛选的索引
- 使用forEach、映射或筛选器克隆和操作嵌套对象,而不修改原始对象
- 嵌套映射和筛选方法
- Typescript数组映射与筛选器