javascript 如何根据key获取赋给变量的值?

wn9m85ua  于 2023-03-21  发布在  Java
关注(0)|答案(2)|浏览(129)

如何将nc键值赋值给我声明的nc变量。

const s = [
'nc: https://nector.com',
'tw: https://twitter.com; li: https://www.linkedin.com; fb: https://www.facebook.com'
]

var li = '';
var tw = '';
var fb = '';
var nc = "";

s.forEach((items) => {
const a = items.split(" ")
const search = query => a.filter(str => str.includes(query))

li = search("linkedin")
tw = search("twitter") 
fb = search("facebook")

})

})

我试过用匹配字符串中的字符来做这件事,但是我在寻找解决方案,这样就可以在key的基础上完成。
注意:数组元素有点奇怪。

xmq68pz9

xmq68pz91#

这段代码提取所有的键值对作为一个数组,然后从结果中构造一个对象。最后,我们解构以将对象属性提取到变量中。

const s = [
'nc: https://nector.com',
'tw: https://twitter.com; li: https://www.linkedin.com; fb: https://www.facebook.com'
]

const {li, tw, fb, nc} = Object.fromEntries(
  s.join('; ').split('; ').map(i=>i.split(': '))
)

console.log(li, tw, fb, nc);
hujrc8aj

hujrc8aj2#

你可以使用reduce方法来实现。步骤如下-
1.使用reduce遍历s数组中的每一项,并将该项分解为;
1.再次迭代每个元素,并将其拆分为:,并将其分配到键值对中。
1.最后创建这些键值对的对象。
这里是演示-

const s = [
  'nc: https://nector.com',
  'tw: https://twitter.com; li: https://www.linkedin.com; fb: https://www.facebook.com'
];

const { nc, li, tw, fb } = s.reduce((r, item) => {
  const kvPairs = item.split('; ');
  kvPairs.forEach((kv) => {
    const [key, value] = kv.split(': ');
    r[key] = value;
  });
  return r;
}, {});

console.log(nc, li, tw, fb);

相关问题