如何将特定元标记的 "name" 和 "content" 属性转换为 JavaScript 对象文字?

How do I convert the "name" and "content" attributes of specific meta tags into a JavaScript object literal?

我有几个如下所示的元标记:

<meta name="Addan:id" content="2098949824982" />
<meta name="Addan:name" content="Addan Salahehin" />

如何将这些 meta 标签(不止 1 个)转换成如下所示的 JavaScript 对象:

{ "id" : "2098949824982" , "name" : "Addan Salahehin" }

我尝试使用 forEach 方法,但 Addan 没有被删除。

我想使用 Vanilla JS 而不是 jQuery。

您可能会收到此错误,因为您没有删除或检查元名称的 "Addan:" 部分,请尝试改用它:

let metas = {};
[...document.querySelectorAll("meta")].forEach(meta => {
  const split = meta.name.split(":");
  if (split[0].trim().toLowerCase() == "addan") {
    metas[split[1]] = meta.content;
  }
});
console.log(metas);
<meta name="Addan:id" content="2098949824982" />
<meta name="Addan:name" content="Addan Salahehin" />

当你 运行 片段时,你应该得到这个输出:

Object { id: "2098949824982", name: "Addan Salahehin" }

注意: 这是一个有效的 code pen

您可以将名称^=Addan 用于select 特定元数据并创建数组或对象

// Array: 
let metas = [...document.querySelectorAll("meta[name^=Addan]")].map(meta => {  
    return {[meta.name.split(":")[1]] : meta.content} 
});
console.log(metas);

// Object

metas = {};
document.querySelectorAll("meta[name^=Addan]").forEach(meta =>   
    metas[meta.name.split(":")[1]] = meta.content
);
console.log(metas);
<meta name="Addan:id" content="2098949824982" />
<meta name="Addan:name" content="Addan Salahehin" />