Помогите из строки сделать массив с отфильтрованными словами
Помогите разобраться.
1. Имеем следующую строку var tweet = 'Нужно выбрать только #heshtagone и #heshtegTwo из этой строки' 2. Задание: В результирующем массиве хэштеги должны быть без решетки и если в слове хэштегов нет, то возвращается пустой массив. Написал такую функцию: function check (tweet) { var result = []; for (var i = 0; i < (tweet.split(/\s|\#/)).length; i++) {var tweetTwo = (tweet.split(/\s|\#/))[i]; if (tweetTwo.indexOf(/\w+/) !== -1) { result.push(tweetTwo);} }} но... не работает, перебрал уже кучу вариантов. Не могу понять, что делаю не так и буду очень благодарен за любую помощь! |
result = tweet.match(/#\S+/g) |
Александр3297,
var tweet = 'Нужно выбрать только #heshtagone и #heshtegTwo из этой строки';
function check(tweet) {
var result = [],
h;
for (var i = 0; i < tweet.length; i++) {
if (tweet[i] == "#") {
h = result.length;
result[h] = ""
} else if (/\S/.test(tweet[i]) && h !== void 0) result[h] += tweet[i];
else h = void 0
}
return result
};
alert(check (tweet));
|
Спасибо!очень выручили!
|
function check(tweet) {
var data = [],
pattern = /#(\S+)/g,
result;
while(result = pattern.exec(tweet)) {
data.push(result[1]);
}
return data;
}
console.log(check('Нужно выбрать только #heshtagone и #heshtegTwo из этой строки'));
Или
function check(tweet) {
var result = tweet.match(/#(\S+)/g);
return result ? result.map(function(item) {
return item.substr(1);
}) : [];
}
console.log(check('Нужно выбрать только #heshtagone и #heshtegTwo из этой строки'));
Или (ES6)
const check = tweet => (tweet.match(/#(\S+)/g) || []).map(item => item.substr(1));
console.log(check('Нужно выбрать только #heshtagone и #heshtegTwo из этой строки'));
|
| Часовой пояс GMT +3, время: 11:55. |