我如何进入我从 json 得到的数组?

How do I get into the array I got from json?

我有一个 JSON 文件。我正在使用 fetch 从该文件中提取数据。但是我想获取我拉取的数组的所有元素中的第一个元素。我试过了,但找不到。你能帮帮我吗?

我的 JSON 数据:

{
    "cols": [
        "Name Surname",
        "Company",
        "Email",
        "Date",
        "Country",
        "City"
    ],
    "data": [
        [
            "Hyacinth Vincent",
            "Duis Corporation",
            "iaculis.enim@magnaCrasconvallis.ca",
            "28/06/2022",
            "Eritrea",
            "Lyubertsy"
        ],
        [
            "Brenden Martinez",
            "Volutpat Nunc Associates",
            "iaculis@estMauris.org",
            "24/03/2021",
            "British Indian Ocean Territory",
            "Colwood"
        ],
        [
            "Lunea Kinney",
            "Ornare Facilisis Eget Incorporated",
            "rutrum.eu@liberoMorbiaccumsan.ca",
            "20/10/2021",
            "Jordan",
            "Yorkton"
        ],
        [
            "Rhona Mooney",
            "Sed Et PC",
            "placerat@sodalesat.ca",
            "10/11/2020",
            "Azerbaijan",
            "Shrewsbury"
        ]
    ]
}

我的 JS 代码:

fetch("api/tesodev.json")
  .then((response) => response.json())
  .then((data) => {
    let cols = data.cols;
    let responseData = data.data;
  for (let index = 0; index < responseData.length; index++) {
    let newResponseData = responseData.map(function (el, i) {
        console.log(el[i]);
      });
      
  }
    console.log(cols[0]);
  });

我真正要做的是获取数据数组所有元素的第一个元素。 我想访问“Hyacinth Vincent”、“Brenden Martinez”、“Lunea Kinney”、“Rhona Mooney”的数据。

您可以使用双索引访问第一个字段。 [i][0] 将访问第 i 个对象中的第一个字段,

let responseData = <json>;

for (let index = 0; index < responseData.length; index++) {
    console.log(responseData[i][0]);
}

你唯一做错的是映射整个子数组并记录它的每个部分,而你想要的是第一个元素:

const data = {
  "cols": [
    "Name Surname",
    "Company",
    "Email",
    "Date",
    "Country",
    "City"
  ],
  "data": [
    [
      "Hyacinth Vincent",
      "Duis Corporation",
      "iaculis.enim@magnaCrasconvallis.ca",
      "28/06/2022",
      "Eritrea",
      "Lyubertsy"
    ],
    [
      "Brenden Martinez",
      "Volutpat Nunc Associates",
      "iaculis@estMauris.org",
      "24/03/2021",
      "British Indian Ocean Territory",
      "Colwood"
    ],
    [
      "Lunea Kinney",
      "Ornare Facilisis Eget Incorporated",
      "rutrum.eu@liberoMorbiaccumsan.ca",
      "20/10/2021",
      "Jordan",
      "Yorkton"
    ],
    [
      "Rhona Mooney",
      "Sed Et PC",
      "placerat@sodalesat.ca",
      "10/11/2020",
      "Azerbaijan",
      "Shrewsbury"
    ]
  ]
}

let cols = data.cols;
let responseData = data.data;
for (let index = 0; index < responseData.length; index++) {
  console.log(responseData[index][0])
}

(我会强烈建议您更改数据格式;对象数组将不那么脆弱:

    ...
    "data": [
        {
            name: "Hyacinth Vincent",
            company: "Duis Corporation",
            email: "iaculis.enim@magnaCrasconvallis.ca",
            date: "28/06/2022",
            country: "Eritrea",
            city: "Lyubertsy"
        },
        {
          ...

您需要在 for 循环中访问当前行,然后访问该行的第一个元素。

fetch("api/tesodev.json")
  .then((response) => response.json())
  .then((data) => {
    let cols = data.cols;
    let responseData = data.data;
    for (let index = 0; index < responseData.length; index++) {
      const myDataRow = responseData[index];
      const theFirstDataOfMyRow = myDataRow[0];
      console.log(theFirstDataOfMyRow); 
    }
    console.log(cols[0]);
  });

您几乎按照您希望的方式进行操作。

const data = {
    "cols": [
        "Name Surname",
        "Company",
        "Email",
        "Date",
        "Country",
        "City"
    ],
    "data": [
        [
            "Hyacinth Vincent",
            "Duis Corporation",
            "iaculis.enim@magnaCrasconvallis.ca",
            "28/06/2022",
            "Eritrea",
            "Lyubertsy"
        ],
        [
            "Brenden Martinez",
            "Volutpat Nunc Associates",
            "iaculis@estMauris.org",
            "24/03/2021",
            "British Indian Ocean Territory",
            "Colwood"
        ],
        [
            "Lunea Kinney",
            "Ornare Facilisis Eget Incorporated",
            "rutrum.eu@liberoMorbiaccumsan.ca",
            "20/10/2021",
            "Jordan",
            "Yorkton"
        ],
        [
            "Rhona Mooney",
            "Sed Et PC",
            "placerat@sodalesat.ca",
            "10/11/2020",
            "Azerbaijan",
            "Shrewsbury"
        ]
    ]
}

// Simplyfied, get data, use only data, only putput first entry in the array.
data.data.forEach((person) => {
  console.log(person[0])
})

// Would be something like this:
/*
fetch("api/tesodev.json")
  .then((response) => response.json())
  .then((data) => {
    let cols = data.cols
    let persons = data.data
    for (i = 0; i < persons.length; i++) {
      console.log(persons[i][0])
    }
  })
*/

嗯……

我觉得这里面有很多问题 newResponseData 将是具有未定义值的项目数组 console.log() returns undefined.

我认为这两行可以提供帮助。 你最后能查一下吗

 let responseData = data.data;
  const finaldata = responseData.map(item => item [0])