首页 > 解决方案 > DOMStringMap 值到数组?

问题描述

如何从数据集中创建值数组?我到处寻找答案,我找不到任何东西。

我有 6 个带有数据集的 HTML 元素(有关于图片内容的信息),我使用所有 img 元素的数据集创建了变量,例如:

for (let i = 0; i < allImages.length; i++) {
        let allDataset1 = [];
        allDataset1.push(allImages[i].dataset);
        console.log(allDataset1);

控制台向我显示了带有数据集值的 DOMStringMap,现在我需要创建一个包含这些值的数组,或者我不需要。我必须将用户输入文本与数据集的每个值进行比较。

标签: javascriptarraysdataset

解决方案


您可以使用 allDataset1 数组上的 find 方法来比较用户输入的文本值,并检查用户输入是否与 allDataset1 数组中的任何值匹配。

数组上的 find() 方法返回提供的数组中满足提供的测试功能的第一个元素的值

假设 userInput 变量中存储了 userInput 值,您只需执行以下操作。

const datasetEnteredByUser = allDataset1.find((val) => val === userInput). 

如果 allDataset1 中没有任何值与 userInput 匹配,则 datasetEnteredByUser 将未定义。

根据下面评论中的讨论, allDataset1 是一个 img 元素数组,并且每个 img 元素的数据集属性中都有一个逗号分隔的字符串。

因此,我认为您需要先以下列方式创建 allDataset1,然后再将其与用户输入进行比较。

let allDataset1 = []
[...allImages].forEach(img => { // Converting the allImages  array of Dom elements into a Javascript array to iterate on.
    allDataset1 = allDataset1.concat(img.getAttribute('dataset').split(','))
})

然后,您可以使用 allDataset1 上的 find 方法将字符串中的每个元素与用户输入进行比较。


推荐阅读