JS如何在模板文字中映射数组
JS how to map through Array in template literals
我 运行 遇到了一个问题,今天无法解决。
比如有一个json文件text.json
[
{
"id":1,
"name":"Jon",
"email":"John@gmail.com"
},
{
"id":2,
"name":"Sam",
"email":"Sam@gmail.com"
},
{
"id":3,
"name":"Dan",
"email":"Dan@gmail.com"
}
]
现在我想使用 ajax 来获取这个 json 文件,这是
部分不工作。
let output = users.map((i) => {
return `<ul>
<li>ID: ${users.id} </li>
<li>Name: ${users.name}</li>
<li>Email: ${users.email}</li>
</ul>`
})
我应该把 i 放在模板文字的什么地方?
不会吧:
let output = users.map((i) => {
return `<ul>
<li>ID: ${i.id} </li>
<li>Name: ${i.name}</li>
<li>Email: ${i.email}</li>
</ul>`;
});
模板文字应采用 ${i.id}
等形式。您希望使用已处理项目的值而不是 users
数组来呈现模板。 users
没有属性 id
或 email
,所以这些是 undefined
const users = [
{
"id":1,
"name":"Jon",
"email":"John@gmail.com"
},
{
"id":2,
"name":"Sam",
"email":"Sam@gmail.com"
},
{
"id":3,
"name":"Dan",
"email":"Dan@gmail.com"
}
];
const output = users.map(({ id, name, email }) => {
return `<ul>
<li>ID: ${id} </li>
<li>Name: ${name}</li>
<li>Email: ${email}</li>
</ul>`
});
console.log(output);
在您的 lambda 中,您使用 i
来引用每个用户,因此,您需要使用 i.id
、i.name
等:
let users = [
{ "id":1, "name":"Jon", "email":"John@gmail.com" },
{ "id":2, "name":"Sam", "email":"Sam@gmail.com" },
{ "id":3, "name":"Dan", "email":"Dan@gmail.com" }
];
let output = users.map((i) => {
return `<ul>
<li>ID: ${i.id}</li>
<li>Name: ${i.name}</li>
<li>Email: ${i.email}</li>
</ul>`;
});
console.log(output);
您应该使用 'i' 变量来访问对象属性:
users.map((i) => {
return `<ul>
<li>ID: ${i.id} </li>
<li>Name: ${i.name}</li>
<li>Email: ${i.email}</li>
</ul>`
})
您正在尝试访问父数组中的值而不是数组中的每个单独元素。
试试这个:
users.map(user =>
`<ul>
<li>ID: ${user.id} </li>
<li>Name: ${user.name}</li>
<li>Email: ${user.email}</li>
</ul>`
);
我 运行 遇到了一个问题,今天无法解决。 比如有一个json文件text.json
[
{
"id":1,
"name":"Jon",
"email":"John@gmail.com"
},
{
"id":2,
"name":"Sam",
"email":"Sam@gmail.com"
},
{
"id":3,
"name":"Dan",
"email":"Dan@gmail.com"
}
]
现在我想使用 ajax 来获取这个 json 文件,这是 部分不工作。
let output = users.map((i) => {
return `<ul>
<li>ID: ${users.id} </li>
<li>Name: ${users.name}</li>
<li>Email: ${users.email}</li>
</ul>`
})
我应该把 i 放在模板文字的什么地方?
不会吧:
let output = users.map((i) => {
return `<ul>
<li>ID: ${i.id} </li>
<li>Name: ${i.name}</li>
<li>Email: ${i.email}</li>
</ul>`;
});
模板文字应采用 ${i.id}
等形式。您希望使用已处理项目的值而不是 users
数组来呈现模板。 users
没有属性 id
或 email
,所以这些是 undefined
const users = [
{
"id":1,
"name":"Jon",
"email":"John@gmail.com"
},
{
"id":2,
"name":"Sam",
"email":"Sam@gmail.com"
},
{
"id":3,
"name":"Dan",
"email":"Dan@gmail.com"
}
];
const output = users.map(({ id, name, email }) => {
return `<ul>
<li>ID: ${id} </li>
<li>Name: ${name}</li>
<li>Email: ${email}</li>
</ul>`
});
console.log(output);
在您的 lambda 中,您使用 i
来引用每个用户,因此,您需要使用 i.id
、i.name
等:
let users = [
{ "id":1, "name":"Jon", "email":"John@gmail.com" },
{ "id":2, "name":"Sam", "email":"Sam@gmail.com" },
{ "id":3, "name":"Dan", "email":"Dan@gmail.com" }
];
let output = users.map((i) => {
return `<ul>
<li>ID: ${i.id}</li>
<li>Name: ${i.name}</li>
<li>Email: ${i.email}</li>
</ul>`;
});
console.log(output);
您应该使用 'i' 变量来访问对象属性:
users.map((i) => {
return `<ul>
<li>ID: ${i.id} </li>
<li>Name: ${i.name}</li>
<li>Email: ${i.email}</li>
</ul>`
})
您正在尝试访问父数组中的值而不是数组中的每个单独元素。
试试这个:
users.map(user =>
`<ul>
<li>ID: ${user.id} </li>
<li>Name: ${user.name}</li>
<li>Email: ${user.email}</li>
</ul>`
);