我可能会也可能不会获得2种格式不同的数据。
它们都需要以不同的方式去除字符。请原谅变量名,一旦完成,我会做的更好。
validates :role_id, uniqueness: { scope: :user_id }
然后我需要将这些数组推送到我的mongo数据库中。
const cut = flatten.map(obj => {
return obj.file.replace("0:/", "");
});
const removeDots = flatten.map(obj => {
return obj.file.replace("../../uploads/", "");
})
我想知道是否有办法加入他们或进行if / else,因为这样做的结果是,如果我有2条记录,它将最终重复,而我得到4条记录而不是2条记录。此外,其中2条记录的格式不正确,即:“ 0:/仍然存在而不是被剥离。
理想情况下,我想检查是否存在let data;
for (const loop of cut) {
data = { name: loop };
product.images.push(data);
}
let moreData;
for (const looptwo of removeDots) {
moreData = {name: looptwo};
product.images.push(moreData);
}
,如果存在0:/
或两者都存在,则将其都删除。然后从中创建一个数组以进行推送。
答案 0 :(得分:3)
您可以在同一map
上进行2次替换:
const processed = flatten.map(obj => {
return obj.file.replace("0:/", "").replace("../../uploads/", "");
});
答案 1 :(得分:2)
既然知道了可能的模式,就可以创建一个正则表达式并用它来替换所有出现的情况。
const regex = /(0:\/|(\.\.\/)+uploads\/)/g
const processed = flatten.map(obj => obj.file.replace(regex, ''));
您可以验证here
请注意,正则表达式是一种基于模式的方法。因此有其优点和缺点。
专业版:
../../uploads/
仅会限制您使用2个文件夹结构。缺点:
.../../uploads/bla
之类的模式,它将被解析为.bla
。答案 2 :(得分:1)
由于您还询问了连接两个数组的可能方法,因此,我将为您提供几种解决方案(使用和不使用连接)。
您可以在数组的元素上链接.replace
,也可以在解决方案中合并两个数组。因此,要么:
const filtered = flatten.map(obj => {
return obj.file.replace('0:/', '').replace('../../uploads/', '');
});
或(加入数组):
// your two .map calls go here
const joinedArray = cut.concat(removeDots);