![](/img/trans.png)
[英]add multiple objects to javascript array - from one single DataBase string value - WITHOUT using loop
[英]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.