Как преобразовать атрибуты «name» и «content» определенных метатегов в литерал объекта JavaScript? - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть несколько метатегов, которые выглядят так:

<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.

Ответы [ 2 ]

0 голосов
/ 24 апреля 2019

Вы можете использовать имя ^ = Addan, чтобы выбрать определенные метас и создать массив или объект

// 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" />
0 голосов
/ 24 апреля 2019

Возможно, вы получаете эту ошибку, потому что вы не удаляете или не проверяете "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" }

ПРИМЕЧАНИЕ: Вот рабочая кодовая ручка .

...