这段时间在hexo上看见一种 object.filter(event => !!~array.indexOf(event.item)) 的语法
举个栗子
deleteImage () {
const oldPhotos = [] // 原来的照片数组[]
const oldAlbums = app.globalData.allData.albums // 原来的照片集合[{x1,y1},{x2,y2},{x3,y3}]
for (var i = 0; i < oldAlbums.length; i++) {
oldPhotos[i] = oldAlbums[i].src // 添加原来的照片[x1,x2,x3]
}
const newPhotos = oldPhotos.filter(src => src != IMG_OLD_SRC) // 添加所有不等于IMG_OLD_SRC的照片[x1,x3]
const newAlbums = oldAlbums.filter(albums => !!~newPhotos.indexOf(albums.src)) // 添加新照片集合[{x1,y1},{x3,y3}]
app.globalData.allData.albums = newAlbums // 将新照片集赋值给全局变量
}
1.箭头函数(=>)
首先,我们先改写一下上述代码中的箭头函数,箭头函数相当于匿名函数,并且简化了函数定义。
好比 const newPhotos = oldPhotos.filter(src => src != IMG_OLD_SRC)
这句话,可以写成如下形式:
deleteImage () {
... ...
const newPhotos = this.newPhotos(oldPhotos)
... ...
}
function newPhotos (oldPhotos) {
return oldPhotos.filter(function (src) {
if (src != IMG_OLD_SRC) {
return -1;
}
return 0;
});
}
于是上述代码可以改写成如下形式:
deleteImage () {