繁体   English   中英

根据所选值从对象数组中过滤数据

[英]filter data from array of objects based on selected value

我有一个组件显示来自数组的数据:

我的第一个组件:

firstArr = [
  {
    "code": "firstArr item 1",
    "name": "firstArr item 1"
  },
  {
    "code": "firstArr item 2",
    "name": "firstArr item 2"
  },
  {
    "code": "firstArr item 3",
    "name": "firstArr item 3"
  },
]

<FirstComponent
  data={firstArr}
  onUpdate={selectedValue => {
    setval(selectedValue);
    console.log(selectedValue);
  }}
/>

现在我有另一个清单:

list2 = {
  "firstArr item 1": [
      {
          "code": "firstArr Subitem 1",
          "name": "firstArr Subitem 1"
      }
  ],
  "firstArr item 2": [
      {
          "code": "firstArr Subitem 2",
          "name": "firstArr Subitem 2"
      }
  ],
  "firstArr item 3": [
      {
          "code": "firstArr Subitem 3",
          "name": "firstArr Subitem 3"
      }
  ],
}

现在基于firstArr中的selectedValue ,我需要过滤list2并仅显示selectedValue的子项

我试过了:

var dataNew = list2.filter(function (i) {
  return i = "firstArr item 1"
})

但这给出了错误

您可以为此使用Object.keys

var firstArr = [
  {
    code: "firstArr item 1",
    name: "firstArr item 1"
  },
  {
    code: "firstArr item 2",
    name: "firstArr item 2"
  },
  {
    code: "firstArr item 3",
    name: "firstArr item 3"
  }
];

var list2 = {
  "firstArr item 1": [
    {
      code: "firstArr Subitem 1",
      name: "firstArr Subitem 1"
    }
  ],
  "firstArr item 2": [
    {
      code: "firstArr Subitem 2",
      name: "firstArr Subitem 2"
    }
  ],
  "firstArr item 3": [
    {
      code: "firstArr Subitem 3",
      name: "firstArr Subitem 3"
    }
  ]
};

var dataNew = Object.keys(list2)
  .filter((x) => x === "firstArr item 1")
  .map((i) => {
    return list2.find((x) => x.code === i);
  });

console.log(dataNew);

为此使用循环可能更容易。

此示例假定数组仅包含一个对象,并且您只需要该数组中的属性来填充新的选择。 如果您需要整个数组,只需从list[key][0] [0]

 const list={"firstArr item 1":[{code:"firstArr Subitem 1",name:"firstArr Subitem 1"}],"firstArr item 2":[{code:"firstArr Subitem 2",name:"firstArr Subitem 2"}],"firstArr item 3":[{code:"firstArr Subitem 3",name:"firstArr Subitem 3"}]}; const value = 'firstArr item 2'; let out; for (const key in list) { if (key === value) out = list[key][0]; } console.log(out);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM