JS: цикл через строку и добавить объект со значением этих слов (один за одним) в массив объектов - PullRequest
0 голосов
/ 05 марта 2019

Я получил строку ( var tags ), ее слова разделены запятой

var msg ='#yeah alter #wow #cool dadadda'

function listTags(){
if(!tagsss.some(r=> msg.indexOf(r) >= 0))
    (tagsss).push(msg.match(/#\w+/g).map(v => v.replace('#', '')))
return (msg.match(/#\w+/g).map(v => v.replace('#', '')))
}
var tags = listTags().toString() // result: yeah,wow,cool

И я получил массив объектов

var arrOfObj = [
     { key: 'Sarah', value: 'Sarah' },
     { key: 'Evan', value: 'Evan' },
     { key: 'Adam', value: 'Adam' }
 ]

Как я могу выполнить цикл через мою строку и создать для каждого слова новый объект внутри моего arrOfObj .Поэтому для каждого отдельного слова (назовем его x) я хотел бы добавить такой объект: {key: x, value: x }

Так что в моем примере результат после первого цикла будет

var arrOfObj = [
     { key: 'Sarah', value: 'Sarah' },
     { key: 'Evan', value: 'Evan' },
     { key: 'Adam', value: 'Adam' },
     { key: 'yeah', value: 'yeah' }
 ]

(Если кто-то знает лучший способ фильтрации хэштегов, дайте мне знать, но моя главная задача - это то, что я упомянул выше, большое спасибо заранее)

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

В новых браузерах вы можете просмотреть #, сопоставить массив строк с массивом объектов, а затем просто concat с исходным массивом:

var arrOfObj = [
     { key: 'Sarah', value: 'Sarah' },
     { key: 'Evan', value: 'Evan' },
     { key: 'Adam', value: 'Adam' }
 ];

var msg ='#yeah alter #wow #cool dadadda';
const result = arrOfObj.concat(
  msg
    .match(/(?<=#)\w+/g)
    .map(key => ({ key, value: key }))
);
console.log(result);
0 голосов
/ 05 марта 2019

Я не вижу цели повторения одного и того же значения с двумя разными ключами на объект, но вы можете легко добиться этого с помощью функции карты массива JS:

    var tags = 'banana,pineapple,passionfruit,durian,jackfruit';
    var arrOfObj = [ { key: 'Sarah', value: 'Sarah' },
                     { key: 'Evan', value: 'Evan' },
                     { key: 'Adam', value: 'Adam' } ];
    var objArr = tags.split(',').map( a => {
	                return {key: a, value: a};
                 });
    
    console.log(arrOfObj.concat(objArr))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...