【问题标题】:Extracting array value from nested array of objects从嵌套的对象数组中提取数组值
【发布时间】:2026-02-09 04:00:01
【问题描述】:

大家好,我创建了以下对象数组。老实说,我有点失落。但是请看一下并帮助我

[
          {
        name: "bananaLight",
        bananaDefinition: [
            {
                bananaRef: 'startBanana',
                title: 'Start Banana'
            },
            { 
                bananaRef: 'endBanana',
                title: 'End Banana'
            }
           ]
          },
          {
        name: "bananaFull",
        bananaDefinition: [
            {
                bananaRef: 'bananaSize'
                title: 'Banana Size'
            },
            {
                bananaRef: 'startBanana',
                title: 'Start Banana'
            },
            { 
                bananaRef: 'endBanana',
                title: 'End Banana'
            }
           ]
         }
]
 

这里的想法是获取以名称bananaLight为边界的bananaDefinition数组

【问题讨论】:

  • 您的数组/对象中没有bananaLight,但如果您的地图返回bananaDefinition,您将拥有一个按规格排列的数组。
  • const result = bananaArray.find(v => v.name === 'bananaLight')
  • @AndreaGiammarchi 好的,那么如何返回与bananaLight在一起的完整数组@
  • @RobbyCornelissen find 方法只返回一个 boolean 没有别的
  • 不,它没有。看我的回答。

标签: javascript arrays json reactjs


【解决方案1】:

你可以使用find():

const bananaArray = [{
  name: "bananaLight",
  bananaDefinition: [{
    bananaRef: 'startBanana',
    title: 'Start Banana'
  }, {
    bananaRef: 'endBanana',
    title: 'End Banana'
  }]
}, {
  name: "bananaFull",
  bananaDefinition: [{
    bananaRef: 'bananaSize',
    title: 'Banana Size'
  }, {
    bananaRef: 'startBanana',
    title: 'Start Banana'
  }, {
    bananaRef: 'endBanana',
    title: 'End Banana'
  }]
}];

const result = bananaArray.find(v => v.name === 'bananaLight').bananaDefinition;

console.log(result);

【讨论】:

  • 是的,你是对的,它不会返回 boolean 。对不起,这是我的错。感谢队友的帮助。这正是我所需要的
【解决方案2】:

根据您想要做的事情,您可能希望通过不同的方式获得它。这是其中的一些:

const dataArray = [
  {
    name: "bananaLight",
    bananaDefinition: [
      {
        bananaRef: "startBanana",
        title: "Start Banana",
      },
      {
        bananaRef: "endBanana",
        title: "End Banana",
      },
    ],
  },
  {
    name: "bananaFull",
    bananaDefinition: [
      {
        bananaRef: "bananaSize",
        title: "Banana Size",
      },
      {
        bananaRef: "startBanana",
        title: "Start Banana",
      },
      {
        bananaRef: "endBanana",
        title: "End Banana",
      },
    ],
  },
];

1

const bananaLightFind = dataArray.find((item) => item.name === "bananaLight");

2

const foundIndex = dataArray.findIndex(item => item.name === "bananaLight")
const bananaLightFindIndex = dataArray[foundIndex];

3

let bananaLightLoop;
dataArray.forEach((item) => {
  if (item.name === "bananaLight") {
    bananaLightLoop = item;
  }
});

【讨论】:

  • 是的,伙计。似乎有多种方法可以使用它。感谢您的努力和您的示例。现在对我来说更清楚我必须做什么。