繁体   English   中英

JS:循环槽字符串并将具有这些词的值的对象(一对一)添加到对象数组

[英]JS: loop trough String and add object with value of these words (one for one) to an array of objects

我有一个String( 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' }
 ]

(如果有人知道一种更好的方法来过滤主题标签,请告诉我,但是我最主要的担心是我在上面提到的内容,在此先感谢您)

我没有真正看到在每个对象中使用两个不同的键重复相同值的目的,但是您可以使用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)) 

在新的浏览器,你可以回顾后为# ,字符串数组映射为对象的数组,然后简单地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); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM