Javascript 从阵列中筛选数据
表中有一个示例元素: zxcdsa.com/photo-277590-30x24.jpeg zxcdsa.com/photo2-254654.png 我想拒绝在其名称el.src中包含从30x30到350x350的字符串的元素。我怎样才能得到这种效果? 使用以下各项筛选元素:Javascript 从阵列中筛选数据,javascript,arrays,Javascript,Arrays,表中有一个示例元素: zxcdsa.com/photo-277590-30x24.jpeg zxcdsa.com/photo2-254654.png 我想拒绝在其名称el.src中包含从30x30到350x350的字符串的元素。我怎样才能得到这种效果? 使用以下各项筛选元素: var newArray = someImages.filter(function (el) { const min = 400; const max = 700; const delimiter = 'x'; re
var newArray = someImages.filter(function (el) {
const min = 400;
const max = 700;
const delimiter = 'x';
return el.width >= 400 ||
el.class.indexOf('post-image') > -1 ||
el.src.match( /\d+x\d+/ )[ 0 ]
.split( delimiter )
.every( ( number ) => {
return number >= min && number <= max;
});
....
});
当match找不到项目时,此代码不起作用
例如:
29x200=>拒绝
200x220=>接受
不带YYxYY=>接受
当.match未找到匹配项时,它将返回null,而不是数组,因此无法使用[0]为其编制索引。因此,您需要将其分解为一个变量赋值,测试它是否为null,以及其他
您还可以在regexp中使用捕获组,以避免调用split
认为你在给自己制造麻烦
从逻辑上讲,将字符串拆分为数组,然后获取数字,如果数字可被10整除,则允许,如果不允许,则不允许什么是字符串、最小值和最大值?请在阵列中发布.string is el.src链接不起作用:您正在查找的资源已被删除、名称已更改或暂时不可用。
var newArray = someImages.filter(function (el) {
return el.width >= 400 ||
el.class.indexOf('post-image') > -1 ||
((m = el.src.match( /(\d+)x(\d+)/ )) &&
[m[1], m[2]].every( number => number >= min && number <= max))
....
});