简体   繁体   English

如何从多维数组中提取值以形成另一个数组?

[英]How to extract values from a multidimensional array to form another array?

So I have an array with 4 values: item, category, checked, number: 所以我有一个包含4个值的数组:项目,类别,已检查,数字:

var MyArray = [
["coke", "beverages", "checked", 000],
["baguette", "bread", "checked", 001],
["water", "beverages", "checked", 000],
["pepsi", "beverages", "checked", 000],
["wholemeal", "bread", "checked", 001],
...
]

How do I make more arrays to categorise them like this: 我如何制作更多数组来对它们进行如下分类:

var beverages = ["coke", "pepsi", "water"]; // more drinks from above array...
var bread = ["baguette", "wholemeal"]; // more types of bread from above array...

Any help would be appreciated, thanks! 任何帮助,将不胜感激,谢谢!

You could use reduce to group the items like this. 您可以使用reduce将项目分组。 Create an accumulator object with each type of food as key. 使用每种食物作为关键字创建一个累加器对象。 Destructure each inner array to get the first and second item. Destructure每个内部数组以获得第一项和第二项。

 var MyArray = [ ["coke", "beverages", "checked", 000], ["baguette", "bread", "checked", 001], ["water", "beverages", "checked", 000], ["pepsi", "beverages", "checked", 000], ["wholemeal", "bread", "checked", 001], ] const grouped = MyArray.reduce((r, [item, type]) => { r[type] = r[type] || []; r[type].push(item) return r; }, {}) const { bread, beverages } = grouped console.log(bread, beverages) 

This is how the grouped object will look. 这就是grouped对象的外观。 You can use destrucutring to get more categories of food 您可以使用去屑获得更多种类的食物

{
  "beverages": [ "coke", "water", "pepsi" ],
  "bread": [ "baguette", "wholemeal" ]
}

It could be like this : 可能是这样的:

var beverages = MyArray.map(data =>  data[0])
var bread = MyArray.map(data =>  data[1]);

and so on. 等等。

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

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