Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript中对单个数组的顺序数组提取_Javascript_Arrays_Indexing - Fatal编程技术网

Javascript中对单个数组的顺序数组提取

Javascript中对单个数组的顺序数组提取,javascript,arrays,indexing,Javascript,Arrays,Indexing,我有一个包含1000个元素的数组。然而,数组遵循一个序列-每十个元素。[水果、蔬菜、糖、面包、水果、蔬菜、糖……] 我需要将每个水果、蔬菜等提取到不同的数组中,但是有10个类,我需要从这个数组中生成10个不同的数组 解决这个问题最可靠的方法是什么 工作在JavaScript上您可以获取一个包含对所需数组的引用的数组,并将其作为数组的索引,以计算实际索引的剩余值和临时数组的长度 var数组=[“水果”、“蔬菜”、“糖”、“面包”、“水果”、“蔬菜”、“糖”、“面包”], 水果=[],//最终数组

我有一个包含1000个元素的数组。然而,数组遵循一个序列-每十个元素。[水果、蔬菜、糖、面包、水果、蔬菜、糖……]

我需要将每个水果、蔬菜等提取到不同的数组中,但是有10个类,我需要从这个数组中生成10个不同的数组

解决这个问题最可靠的方法是什么


工作在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
值,只是指出了这一点。