【问题标题】:To destructure a particular property of each object that is nested in an array of objects [duplicate]解构嵌套在对象数组中的每个对象的特定属性[重复]
【发布时间】:2021-04-17 19:24:42
【问题描述】:

我想知道我是否可以解构这个对象数组

 const course = {
        id: 1,
        name: 'Half Stack application development',
        parts: [
            {
                name: 'Fundamentals of React',
                exercises: 10,
                id: 1
            },
            {
                name: 'Using props to pass data',
                exercises: 7,
                id: 2
            },
            {
                name: 'State of a component',
                exercises: 14,
                id: 3
            },
        ]
    }

并将属性exercises保存在一个变量中,我不知道我们是否会这样做,只是想知道我们如何以及是否可以解构对象数组中的对象属性

@ggrlen 这是数组

const arr = [{
    name: 'State of a component',
    exercises: 14,
    id: 3
}];

我想破坏这个数组中的对象,将exercises属性的值提取到一个变量中,谢谢你的回复。

【问题讨论】:

  • 共有三个练习。你的最终目标是exercises = [10, 7, 14] 吗?我会做course.parts.map(e => e.exercises)。我不认为你可以更简洁。
  • 谢谢,非常感谢您的帮助
  • @ggorlen 假设有一个部件数组并且它只有一个对象,然后我可以从 1 个对象的数组中解构 1 个属性吗?我不知道我是否在问正确的问题,但有可能这样做吗?我们会这样做吗?我知道问题是一样的,但数组只包含一个对象..并且只有部件数组..
  • 你能展示你正在谈论的数组吗?如果没有看到确切的输入和输出,很难理解你想要什么。如果您有var a = [{foo: 42}];,您可以使用var [{foo}] = a; 提取foo。如果你有var a = {b: [{foo: 42}]},你可以用var {b: [{foo}]} = a;提取foo
  • 是的,var [{exercises}] = arr;。如果数组中有 2 个元素并且您想要第二个 exercises 值,则可以使用 var [, {exercises}] = arr

标签: javascript arrays javascript-objects destructuring


【解决方案1】:

将我的 cmets 转换为答案以说明各种解构模式:

const course = {
  id: 1,
  name: 'Half Stack application development',
  parts: [
    {
      name: 'Fundamentals of React',
      exercises: 10,
      id: 1
    },
    {
      name: 'Using props to pass data',
      exercises: 7,
      id: 2
    },
    {
      name: 'State of a component',
      exercises: 14,
      id: 3
    },
  ]
};

console.log(course.parts.map(e => e.exercises));
console.log(course.parts.map(({exercises: e}) => e)); // rename to `e`

let {parts: [{exercises}]} = course; // extract nested property
console.log(exercises); // 10

({parts: [,{exercises}]} = course); // second elem
console.log(exercises); // 7

({parts: [,,{exercises}]} = course); // third elem
console.log(exercises); // 14

const arr = [
  {
    name: 'State of a component',
    exercises: 14,
    id: 3
  },
  {
    name: 'State of a component',
    exercises: 1422,
    id: 3
  }
];

const [{exercises}] = arr;
console.log(exercises); // 14

let [, ...rest] = arr; // extract everything after the first
console.log(rest);

// from second elem, extract `exercises` as `ex`, 
// extract object properties other than `exercises` as `others`
const [,{exercises: ex, ...others}] = arr;
console.log(ex); // 1422
console.log(others);

【讨论】:

    猜你喜欢
    • 2012-11-17
    • 2022-01-05
    • 2022-01-08
    • 2021-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    相关资源
    最近更新 更多