检查数组中是否存在函数
Check if function exists in array
我有一个 kinecticjs 图像对象,我正在根据一些参数应用滤镜,但是当它需要重新绘制时,它会再次应用滤镜,这意味着它会复制滤镜。
我知道我应该做一些检查,但它对数组应用了一个函数。
//create object
var image = new Kinetic.Image({
image: alreadyLoadedImageObject
});
function addFilter(shouldAdd){
if(shouldAdd){
var filters = image.filters() || [];
filters.push(Kinetic.Filters.RGB);
image.filters(filters);
}
}
layer.add(image);
stage.add(layer);
addFilter(true);
stage.draw();
setTimeout(function(){
addFilter(true);
stage.draw();
},500);
这应该大致显示了我当前正在做的事情,在这种情况下,一旦超时,将有 2 Kinetic.Filters.RGB
应用于图像对象。
我认为这是一个一般性的 javascript 问题,而不仅仅是 kineticjs,因为根本原因是我需要以某种方式知道过滤器数组中已经有一个 Kinetic.Filters.RGB
函数。
所以有 2 个问题,是否可以用 Array.indexOf
之类的东西来检查数组中是否已经存在函数名称?还是 KineticJS 中已经有某种我没见过的预构建方法?
x = function(){};
y = function(){};
a = [];
a.push(x);
a.indexOf(x); //0
a.indexOf(y); //-1
所以你可以试试:
if(filters.indexOf(Kinetic.Filters.RGB) !== -1)
您也可以使用 some() 函数进行检查。
if(!filters.some((val) => {val == Kinetic.Filters.RGB}))
我有一个 kinecticjs 图像对象,我正在根据一些参数应用滤镜,但是当它需要重新绘制时,它会再次应用滤镜,这意味着它会复制滤镜。
我知道我应该做一些检查,但它对数组应用了一个函数。
//create object
var image = new Kinetic.Image({
image: alreadyLoadedImageObject
});
function addFilter(shouldAdd){
if(shouldAdd){
var filters = image.filters() || [];
filters.push(Kinetic.Filters.RGB);
image.filters(filters);
}
}
layer.add(image);
stage.add(layer);
addFilter(true);
stage.draw();
setTimeout(function(){
addFilter(true);
stage.draw();
},500);
这应该大致显示了我当前正在做的事情,在这种情况下,一旦超时,将有 2 Kinetic.Filters.RGB
应用于图像对象。
我认为这是一个一般性的 javascript 问题,而不仅仅是 kineticjs,因为根本原因是我需要以某种方式知道过滤器数组中已经有一个 Kinetic.Filters.RGB
函数。
所以有 2 个问题,是否可以用 Array.indexOf
之类的东西来检查数组中是否已经存在函数名称?还是 KineticJS 中已经有某种我没见过的预构建方法?
x = function(){};
y = function(){};
a = [];
a.push(x);
a.indexOf(x); //0
a.indexOf(y); //-1
所以你可以试试:
if(filters.indexOf(Kinetic.Filters.RGB) !== -1)
您也可以使用 some() 函数进行检查。
if(!filters.some((val) => {val == Kinetic.Filters.RGB}))