我正在尝试使用indexOf输出events数组中的前两个对象。
这不会返回任何内容:
var whiteList=['css','js'];
var events =[
{file: 'css/style.css', type:'css'},
{file: 'js/app.js', type:'js'},
{file: 'index/html.html', type:'html'}
];
var fileList= events
.filter(function(event){
return event.type.indexOf(whiteList) >- 1
})
console.log(fileList);
如果我改变这样的函数,它会返回css和js对象,虽然我希望它返回html对象。
var fileList= events
.filter(function(event){
return event.type.indexOf('html')
})
答案 0 :(得分:11)
你做错了,它应该是这样的。
var whiteList = ['css', 'js'];
var events = [{
file: 'css/style.css',
type: 'css'
}, {
file: 'js/app.js',
type: 'js'
}, {
file: 'index/html.html',
type: 'html'
}];
var fileList = events.filter(function(event) {
return whiteList.indexOf(event.type) > -1
})
console.log(fileList)
答案 1 :(得分:5)
使用ES6,您可以使用Set
更快地访问更大的数据集。
var whiteList = ['css', 'js'],
whiteSet = new Set(whiteList),
events = [{ file: 'css/style.css', type: 'css' }, { file: 'js/app.js', type: 'js' }, { file: 'index/html.html', type: 'html' }],
fileList = events.filter(event => whiteSet.has(event.type));
console.log(fileList);