Есть ли способ сократить запись?
Есть к примеру фейковый массив который к примеру получен с базы данных :
Код:
let obj = [{ name: "", average: "", cpu: "", price: "",},{ name: "", average: "", cpu: "", price: "",},{ name: "", average: "", cpu: "", price: "",},{ name: "", average: "", cpu: "", price: "",}]Код:
<div data-name="" data-average="" data-cpu="" data-price=""></div>Код:
for(const inf of obj){ |
Способ называется цикл, лол.)
for(const inf of obj){
let d = document.createElement("div");
for(const key in inf){
d.setAttribute("data-" + key, inf[key]);
}
console.log(d);
}
или
let divs = obj.map(inf => {
let d = document.createElement("div");
Object.entries(inf).forEach(
([key, value]) => d.setAttribute(`data-${key}`, value)
);
console.log(d);
return d;
});
|
Цитата:
Для себя увидел новое .. Огромное спасибо |
Вместо
d.setAttribute(`data-${key}`, value) можно d.dataset[key] = value; |
maxim1978,
for(const inf of obj){
let d = document.createElement("div");
Object.assign(d.dataset, inf);
}
|
maxim1978,
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
div:after {
content: attr(data-price);
}
</style>
</head>
<body>
<script>
let obj = [{
name: "",
average: "",
cpu: "",
price: "1",
}, {
name: "",
average: "",
cpu: "",
price: "2",
}, {
name: "",
average: "",
cpu: "",
price: "3",
}, {
name: "",
average: "",
cpu: "",
price: "4",
}]
for (const inf of obj) {
let d = document.createElement("div");
Object.assign(d.dataset, inf);
document.body.append(d);
}
</script>
</body>
</html>
|
| Часовой пояс GMT +3, время: 12:36. |