任何指导或教育将不胜感激。
我有一系列产品名称-带有许多冗余和随机短语。
我认为我会很聪明,并创建一些小的辅助函数来提取不必要的短语,与此同时,我正在尝试“新”(对我而言)数组功能。
但是,我陷入了困境,而且我不知道如何以最有效的方式最好地进行下去。
let sku = base_arr.map(function(word) {
let result = (check_regex(word, regex_sku)) ? extract_regex(word, regex_sku) : word;
return result;
});
let age = sku.map(function(word) {
let result = (check_regex(word, regex_age)) ? extract_regex(word, regex_age) : word;
return result;
});
如果我添加更多的辅助功能,例如删除空格,并且不要按顺序进行操作。
我的数组开始取消一些先前的工作。
我尝试将代码包装在函数中,而不是压缩为小的函数表达式。但是,这似乎不起作用。
例如:
function extract_sku(arr) {
return arr.map(function(word) {
let result = (check_regex(word, regex_sku)) ? extract_regex(word, regex_sku) : word;
return result;
});
};
但是,当我想应用第二个辅助函数时,得到的是未定义的。
console.log(extract_sku(extract_whitespace(base_arr)))
取决于我要处理的数组,我不知道要应用什么辅助函数。
我把这一切都弄错了吗?我是否应该编写一个函数来封装所有可能的this.extract_sku = function(),将基本数组复制到临时数组,然后使用splice?
任何指导都是最有帮助的!
答案 0 :(得分:2)
您只需传递一个正则表达式数组即可按顺序替换并获取所需结果
function extract(base_arr,regex_arr){
let result;
for(regex in regex_arr){
base_arr.map(function(word) {
result = (check_regex(word, regex)) ? extract_regex(word, regex) : word;
}
}
return result;
}
然后在您应该致电的示例案例中获取所需的结果
let age = extract(base_arr, [regex_sku, regex_age]);
还可以将正则表达式数组设置为全局变量
let ageRegex = [regex_sku, regex_age];
还有一个函数getAge();
function getAge(base_arr) {
return extract(base_arr,ageRegex);
}
答案 1 :(得分:1)
您可以创建单独的function
,将不同的部分设置为parameter
,并将其用作map
内部的回调,例如:
function mapper (word, reg) {
let result = (check_regex(word, reg)) ? extract_regex(word, reg) : word;
return result;
}
let age = sku.map(word => mapper(word, regex_sku));
答案 2 :(得分:0)
只需创建一个函数,它将为您创建一个映射器:
function createRegexMapper(regex) {
return word => check_regex(word, regex)
? extract_regex(word, regex)
: word;
}
然后您可以在很多映射中使用它
arr.map(createRegexMapper(regex1))
.map(createRegexMapper(regex2))
.map(createRegexMapper(regex3))