Пишу поиск для аудиоплеера. Возникла проблема: почему-то пишет что allForSearch is not defined
var songs = [{
url: 'http://tegos.kz/new/mp3_full/Redfoo_-_New_Thang.mp3',
artist: {
name: 'Redfoo',
song: 'New Thang'
}
},
{
url: 'http://a.tumblr.com/tumblr_lpoc6cHNDP1r0jthjo1.mp3',
artist: {
name: 'Hugo',
song: '99 Problems'
}
}
];
search = () => {
const {
songs
} = this.state;
var input = this.textInput.value;
songs.forEach(function(item) {
var names = item.artist.name,
song = item.artist.song,
allForSearch = names.concat(song);
});
function init() {
let template = `<td><a href=#>%name</a></td>`,
search = document.querySelector('.search'),
tr = document.querySelector('.mess-hide'),
render = a => tr.innerHTML = a.map(e => template.replace('%name', e)).join(`\n`);
search.addEventListener('.search', function(e) {
let value = input.toLowerCase();
render(allForSearch.filter(e => e.toLowerCase().startsWith(value)));
});
render(allForSearch);
}
}
<table className="table">
<tr className="mess-hide">
</tr>
</table>
Немного объясню: songs массив объектов. С помощью forEach я копирую все названия и имена в другой массив для того что бы осуществлять поиск. Но почему-то с allForSearch возникают проблемы. Почему так может быть?
allForSearch объявляется внутри функции, переданной в songs.forEach
songs.forEach(function(item) {
var names = item.artist.name,
song = item.artist.song,
allForSearch = names.concat(song);
});
Объявите var allForSearch глобально, наряду с var songs = [], либо внутри блока search = () => {
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости