Javascript中对单个数组的顺序数组提取
我有一个包含1000个元素的数组。然而,数组遵循一个序列-每十个元素。[水果、蔬菜、糖、面包、水果、蔬菜、糖……] 我需要将每个水果、蔬菜等提取到不同的数组中,但是有10个类,我需要从这个数组中生成10个不同的数组 解决这个问题最可靠的方法是什么Javascript中对单个数组的顺序数组提取,javascript,arrays,indexing,Javascript,Arrays,Indexing,我有一个包含1000个元素的数组。然而,数组遵循一个序列-每十个元素。[水果、蔬菜、糖、面包、水果、蔬菜、糖……] 我需要将每个水果、蔬菜等提取到不同的数组中,但是有10个类,我需要从这个数组中生成10个不同的数组 解决这个问题最可靠的方法是什么 工作在JavaScript上您可以获取一个包含对所需数组的引用的数组,并将其作为数组的索引,以计算实际索引的剩余值和临时数组的长度 var数组=[“水果”、“蔬菜”、“糖”、“面包”、“水果”、“蔬菜”、“糖”、“面包”], 水果=[],//最终数组
工作在JavaScript上您可以获取一个包含对所需数组的引用的数组,并将其作为数组的索引,以计算实际索引的剩余值和临时数组的长度
var数组=[“水果”、“蔬菜”、“糖”、“面包”、“水果”、“蔬菜”、“糖”、“面包”],
水果=[],//最终数组
蔬菜=[]//
糖=[]//
面包=[]//
温度=[水果、蔬菜、糖、面包],
len=温度长度;
array.forEach((v,i)=>temp[i%len].push(v));
原木(水果);
控制台.日志(蔬菜);
控制台日志(糖);
控制台。原木(面包)代码>
.as控制台包装{max height:100%!important;top:0;}
不是非常优雅,但它可以完成任务
var a=
[‘面包’、‘水果’、‘蔬菜’、‘糖’,
‘面包’、‘水果’、‘蔬菜’、‘糖’,
“面包”、“水果”、“蔬菜”、“糖”];
var i=0;
a=a.reduce(功能(ac、va、id、ar){
如果(i==ac.length)i=0;
ac[i].推力(va);
i++;
返回ac;
}, [[],[],[],[]]);
控制台日志(a);
我建议(因为模式可能会有所不同)创建一个包含类别以及这些类别包含哪些元素的数组,从而创建一个带有标识类别的键的对象
变量未在对象外部“声明”,但您可以使用与使用不同变量相同的方式访问对象键:
// Simple old-style catalog as reference for your elements array.
var Categories = {
'fruits': ['orange', 'apple', 'all other fruits…'],
'vegetables': ['ginger', 'broccoli', 'all other vegetables…'],
'bread': ['pizza', 'panini', 'all other breads…'],
'sugars': ['soda', 'sugar1', '90_percent_of_products_are_sugar', 'all other sugars…']
};
// Your actual elements array.
var ElementsArray = [
'orange',
'broccoli',
'pizza',
'sugar1',
'apple',
'ginger',
'panini',
'soda'
];
// Your organized-by-category variable, declare as object so you can easily access as Array or Object (keys are the variable arrays).
var OrderedElementsArray = {};
for (element in ElementsArray)
{
for (category in Categories)
{
// Check if the key is not an array an initialize it for later use of push().
if (typeof OrderedElementsArray[category] != 'object')
{
OrderedElementsArray[category] = [];
}
// indexOf() returns -1 if no element matches an index, thus the expression `>= 0`.
if (Categories[category].indexOf(ElementsArray[element]) >= 0)
{
OrderedElementsArray[category].push(ElementsArray[element]);
}
}
}
// Here you can access your object variables with dot notation. All your categories will be accessible either way.
console.log(OrderedElementsArray.fruits);
console.log(OrderedElementsArray.vegetables);
console.log(OrderedElementsArray.bread);
console.log(OrderedElementsArray.sugars);
// Here you can access your object variables with key notation. All your categories will be accessible either way.
console.log(OrderedElementsArray['fruits']);
console.log(OrderedElementsArray['vegetables']);
console.log(OrderedElementsArray['bread']);
console.log(OrderedElementsArray['sugars']);
在您的1000元素数组中,您知道它们是什么类别吗?向我们展示您的数组并向我们展示您需要的内容,我知道其中有10个类别,它们在100个元素中遵循一个顺序。数组的示例已编写,我已在只有3个类别的较小数组中取得成功。所以%3==0来提取第三个元素并生成一个临时数组,稍后我使用%2==0从临时数组中提取另一个元素,你能给我一个15个元素的数组示例吗?它是一个多维数组吗?元素本身不重复(每次都不同),但它们遵循一个序列。我需要从该数组中提取10个不同的类别。*元素不完全相同*我只提取了4个,而不是当时。内容可能会有所不同。这只是一个较小子集的示例。如前所述,它修改了window.length
值,只是指出了这一点。