如何从数据集字符串中提取数组?

时间:2019-04-06 11:11:09

标签: javascript arrays dataset

我正在抓取网页,并且需要使用数据集来获取所需的信息。我无法处理的数据集格式为<... data-info='["a","b","c"]'>。我可以提取数据集并获取包含例如的数组。 info: "["a","b","c"]",但我无法将其设为从中获取数据的数组。

据我了解,数据集总是返回字符串,在这种情况下,字符串被格式化为数组。我试过使用split()函数,但似乎无法按照我想要的方式工作。

// myElements is an array of the elements i want by
// const myElements = [...querySelectorAll('myQuery')]
const myObj = myElements.map(a => ({ name: a.textContent, info: a.dataset.info }))

这给了我一组对象{name: "Some name", info: "["a","b","c"]"}。 由于info是一个字符串,因此我无法按照自己的方式使用它,因此我尝试了:

const myNewObj = myObj.map(a => ({
    name: a.name, 
    info: a.info.split(/(?:\[")|(?:",")|(?:"\])/g)
}))

这接近我想要的{name: "Some name", info: ["","a","b","c",""]}

问题是第一个和最后一个条目为空。

我可以添加有效的.filter(a => a ? true : false),因此通过编写此问题,我已经解决了我的问题。但是我发现生成的代码很混乱,希望您输入更好的方法来解决它!


解决方案(请参阅链接的问题):

const myObj = myElements.map(a => ({ name: a.textContent, info: JSON.parse(a.dataset.info) }));

0 个答案:

没有答案