我有一个字符串( var标签),其单词用逗号分隔
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' }
]
(如果有人知道一种更好的方法来过滤主题标签,请告诉我,但我最主要的担心是我在上面提到的内容,在此先谢谢了)
答案 0 :(得分:0)
我真的看不到每个对象使用两个不同的键重复相同值的目的,但是您可以使用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))
答案 1 :(得分:0)
在较新的浏览器中,您可以向后寻找#
,将字符串数组映射到对象数组,然后简单地将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);