json 如何将对象数组转换为只包含一个属性值的数组?

ne5o7dgx  于 2023-01-14  发布在  其他
关注(0)|答案(2)|浏览(158)

我正在尝试使用.includes()数组方法来检查一个项目是否在我的JSON文件中。到目前为止,我已经建立了到数据库的连接(使用JSON服务器npm插件)并已检索回对象数组,并将它们存储在变量“fetchedData”中。我知道。包括()将数组作为第一个参数,并在数组中搜索第二个参数。如何将这个对象数组转换为只包含name属性值的数组?.includes()是这样工作的吗?
这是一个JSON文件:

"savedexercises": [
    {
      "name": "all fours squad stretch",
      "target": "quads",
      "gifUrl": "http://d205bpvrqc9yn1.cloudfront.net/1512.gif",
      "id": 1
    },
    {
      "name": "ankle circles",
      "target": "calves",
      "gifUrl": "http://d205bpvrqc9yn1.cloudfront.net/1368.gif",
      "id": 2
    },
    {
      "name": "arm slingers hanging bent knee legs",
      "target": "abs",
      "gifUrl": "http://d205bpvrqc9yn1.cloudfront.net/2355.gif",
      "id": 3
    }
  ]
}

我只是尝试访问所有name属性值,然后将它们存储到数组中。

0md85ypi

0md85ypi1#

您可以过滤和Map来查找特定键的所有值,并将其转换为对象数组或任何形式。Includes只会告诉您这样的键是否存在。

const createArraybasedOnkey= (key) => {
    console.log(
      obj.savedexercises
        .filter((x) => x[key])
        ?.map((x) => {
          return { [key]: x[key] };
        })
    );
  };

代码沙箱:https://codesandbox.io/s/pedantic-rain-u1t9th?file=/src/App.js:625-817

wqnecbli

wqnecbli2#

使用array.map()。例如:

const exerciseNames = savedexercises.map(exercise => exercise.name)
// Expected output:
// ["all fours squad stretch", "ankle circles",
//  "arm slingers hanging bent knee legs"]

// Now you can check if the exerciseNames includes a certain exercise:
console.log(exerciseNames.includes("all fours squad stretch"))
// Expected output: true

相关问题