javascript - 数组中特定元素的组合
问题描述
假设我这样做是因为我的家庭作业。我想为接下来的一周制定某种时间表(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++) {
...
}
解决方案
这是一种模式,请查看我的工作片段:
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);
推荐阅读
- r - 在没有特定格式的文本中查找代码
- c++ - 如何将 int 类型的数字/字母转换为 char 和 *char?
- javascript - 如何创建集成测试中型、第 3 方 API 重型 nodejs 应用程序?
- python - django 如何真正处理开发服务器上的多个请求?
- javascript - 如何在 D3js 树中插入矢量 .svg 图像
- angular - Angular Matdialog 缺少后台和主题
- python-xarray - xarray.Dataset:在保持属性的同时更改坐标值?
- c++ - 错误:显示没有动态分配的链表(DISPLAY 不工作)
- python - 没有 id 的 Psycopg execute_values
- c++ - 如何使用 boost::asio::stream_socket_service 将代码移植到较新版本的 boost 和 asio?