Javascript 筛选动态数组值
我需要编码方面的帮助 我需要从数组中筛选14个值。 这些值是动态创建的。 我想将值与20.0进行比较 我只需要其中两个值高于20.0 我把希望寄托在Javascript 筛选动态数组值,javascript,arrays,Javascript,Arrays,我需要编码方面的帮助 我需要从数组中筛选14个值。 这些值是动态创建的。 我想将值与20.0进行比较 我只需要其中两个值高于20.0 我把希望寄托在过滤器方法上,因为开关不起作用。 提前谢谢你 if (!Array.prototype.filter) { Array.prototype.filter = function (fun /*, thisp*/) { var len = this.length; if (typeof fun != "funct
过滤器方法上,因为开关不起作用。
提前谢谢你
if (!Array.prototype.filter) {
Array.prototype.filter = function (fun /*, thisp*/) {
var len = this.length;
if (typeof fun != "function")
throw new TypeError();
var res = new Array();
var thisp = arguments[1];
for (var i = 0; i < len; i++) {
if (i in this) {
var val = this[i]; // in case fun mutates this
if (fun.call(thisp, val, i, this))
res.push(val);
}
}
return res;
};
}
function isBigEnough(element, index, array) {
return (filtered >= 20.0);
}
var filtered = [
(vol1l * 100).toFixed(1),
(vol2l * 100).toFixed(1),
(vol3l * 100).toFixed(1),
(vol4l * 100).toFixed(1),
(vol5l * 100).toFixed(1),
(vol6l * 100).toFixed(1),
(vol7l * 100).toFixed(1),
(vol1r * 100).toFixed(1),
(vol2r * 100).toFixed(1),
(vol3r * 100).toFixed(1),
(vol4r * 100).toFixed(1),
(vol5r * 100).toFixed(1),
(vol6r * 100).toFixed(1),
(vol7r * 100).toFixed(1)
].filter(isBigEnough);
if (filtered) {
testText.textContent = "JA! Gerät"
} else {
testText.textContent = "NO! Nein"
}
if(!Array.prototype.filter){
Array.prototype.filter=函数(fun/*,thisp*/){
var len=此长度;
如果(乐趣的类型!=“功能”)
抛出新的TypeError();
var res=新数组();
var thisp=参数[1];
对于(变量i=0;i=20.0);
}
已筛选的变量=[
(卷1*100)。固定(1),
(vol2l*100)。固定(1),
(体积3L*100)。固定(1),
(体积4L*100)。固定(1),
(体积5L*100)。固定(1),
(vol6l*100)。toFixed(1),
(体积7L*100)。固定(1),
(vol1r*100)。固定(1),
(vol2r*100)。固定(1),
(卷3R*100)。固定(1),
(卷4R*100)。固定(1),
(卷5R*100)。固定(1),
(卷6R*100)。固定(1),
(卷7R*100).固定(1)
].过滤器(足够大);
如果(已过滤){
testText.textContent=“JA!Gerät”
}否则{
testText.textContent=“不!不”
}
功能足够大,请尝试使用20.0
检查过滤的。这将始终返回false
,因为filtered
是undefined
代码
例子
函数足够大(元素、索引、数组){
返回(元素>=20.0);
}
过滤的var=[1.0.toFixed(1)、2.0.toFixed(1)、20.0.toFixed(1)、21.0.toFixed(1)]。过滤器(足够大)
console.log(已过滤)
功能足够大,请尝试使用20.0
检查已过滤的
。这将始终返回false
,因为filtered
是undefined
代码
例子
函数足够大(元素、索引、数组){
返回(元素>=20.0);
}
过滤的var=[1.0.toFixed(1)、2.0.toFixed(1)、20.0.toFixed(1)、21.0.toFixed(1)]。过滤器(足够大)
log(已过滤)
为什么不映射变量,获取调整后的值并进行过滤呢
const
factor100 = v => 100 * v,
isBigEnough = v => v >= 20;
var filtered = [vol1l, vol2l, vol3l, vol4l, vol5l, vol6l, vol7l, vol1r, vol2r, vol3r, vol4r, vol5r, vol6r, vol7r]
.map(factor100)
.filter(isBigEnough);
此方案适用于的内置原型
我建议直接使用数组时使用更好的iterable数据结构。为什么不映射变量,获取调整后的值并对其进行过滤呢
const
factor100 = v => 100 * v,
isBigEnough = v => v >= 20;
var filtered = [vol1l, vol2l, vol3l, vol4l, vol5l, vol6l, vol7l, vol1r, vol2r, vol3r, vol4r, vol5r, vol6r, vol7r]
.map(factor100)
.filter(isBigEnough);
此方案适用于的内置原型
我建议直接使用数组时使用更好的可移植数据结构。我不确定是否理解您要归档的内容,但我想您应该检查element=>20.0
而不是(数组)filtered
…我不确定您想归档什么,但我想您应该检查element=>20.0
而不是(数组)filtered
…这将迭代数组两次,并且不会引用足够大的,哪一个更大reusable@Roman对,但是我认为重写过滤器的问题更大。这将迭代数组两次,并且没有引用足够大的isbigtough
,哪一个更大reusable@Roman,是的,但我认为重写过滤器更重要。