首页 > 解决方案 > 数组中特定元素的组合

问题描述

假设我这样做是因为我的家庭作业。我想为接下来的一周制定某种时间表(6-7 个元素的数组 - 输出结果)。但我有一个问题。我需要弄清楚一个元素如何在数组中定位,而且他的频率必须正是用户输入的内容。元素必须位于数组中的不同索引处。

我从用户那里得到了这种输入(只是一个例子);

var arrayOfElements = ["el1","el2","el3"];
var el1Frequency = 3;
var el2Frequency = 2;
var el3Frequency = 1;
//output array of schedule (this is just an example)
var finaloutPutArray = ["el1","el2","el3","el1","el2","el1"];

元素 el1 的索引是 0、3 和 5,基本上,我不希望元素像这样重复;

["el1","el1","el2","el3"...];
["el2","el1","el1","el3"];

你能给我一些关于如何解决这个问题的想法吗?

我是这样开始的;

var finalSchedule = [];

var totalDaysPerWeek = 6;
for(var i =0; i < totalDaysPerWeek; i++) {
  ...
}

标签: javascriptreactjs

解决方案


这是一种模式,请查看我的工作片段:

var arrayOfElements = ["el1","el2","el3"];
var obj = { el1: 3,
            el2: 2,
            el3: 1};
                        
 // First determine the max recurring of an element, this will be the number of cycles fo your loop

// Check key values
var arr =  Object.keys(obj).map(function ( key ) { return obj[key]; });

// Get max value
var max = Math.max.apply( null, arr );
var finalArray = [];

// Iterate from 0 to max val
for(i = 0; i < max; i += 1){
  // Iterate on array of elements
  for(k = 0; k < arrayOfElements.length; k += 1) {
    // If config of recurring
    if( obj[arrayOfElements[k]] >= i+1 ) {
       // Push into array
       finalArray.push(arrayOfElements[k]);
    }
  }
}

console.log(finalArray);


推荐阅读