5

我遇到了一个问题,今天无法解决。比如有个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 放在模板文字的哪里?

4

5 回答 5

10

会不会是:

let output = users.map((i) => {
    return `<ul>
              <li>ID: ${i.id} </li>
              <li>Name: ${i.name}</li>
              <li>Email: ${i.email}</li>
            </ul>`;
 });
于 2017-10-03T12:44:37.170 回答
6

您正在尝试访问父数组上的值,而不是数组中的每个单独元素。

试试这个:

users.map(user => 
  `<ul>
    <li>ID: ${user.id} </li>
    <li>Name: ${user.name}</li>
    <li>Email: ${user.email}</li>
  </ul>`
);
于 2017-10-03T12:50:16.517 回答
3

模板文字应该是形式${i.id}等。您希望使用已处理项目的值而不是users数组来呈现模板。users没有属性idor 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);

于 2017-10-03T12:47:44.457 回答
1

在您的 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);

于 2017-10-03T12:47:45.460 回答
0

您应该使用“i”变量来访问对象属性:

users.map((i) => {
  return `<ul>
         <li>ID: ${i.id} </li>
         <li>Name: ${i.name}</li>
         <li>Email: ${i.email}</li>
      </ul>`
})
于 2017-10-03T12:47:53.297 回答