Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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_Object - Fatal编程技术网

Javascript 数组到值在某个范围内的对象

Javascript 数组到值在某个范围内的对象,javascript,arrays,object,Javascript,Arrays,Object,我有一个疯狂的要求。我不知道如何使它工作良好,可能是我想在这里得到社区的帮助。这是我第一次来这里。让我把我的情况解释清楚 我有一个数组,比如说10个元素 var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].reverse(); 现在我需要创建一个包含数组元素的键对象,但它们的值应该如下所示: 前5名为“高” 接下来的3个是“中等” 其余2为“低” 我在另一个数组中有上述信息: var capacity = [5, 3, 2]; 上述三个值(高,中,低)是静

我有一个疯狂的要求。我不知道如何使它工作良好,可能是我想在这里得到社区的帮助。这是我第一次来这里。让我把我的情况解释清楚

我有一个数组,比如说10个元素

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].reverse();
现在我需要创建一个包含数组元素的键对象,但它们的值应该如下所示:

  • 前5名为“高”
  • 接下来的3个是“中等”
  • 其余2为“低”
我在另一个数组中有上述信息:

var capacity = [5, 3, 2];
上述三个值(
,低)是静态的。我不知道如何从这里开始。我不确定是否应该使用
for
循环硬编码,如:

var obj = {};
for (var i = 0; i < capacity[0]; i++)
  obj[arr[i]] = "high";
for (; i < capacity[0] + capacity[1]; i++)
  obj[arr[i]] = "medium";
for (; i < capacity[0] + capacity[1] + capacity[2]; i++)
  obj[arr[i]] = "low";
var obj={};
对于(变量i=0;i<容量[0];i++)
obj[arr[i]]=“高”;
对于(;i<容量[0]+容量[1];i++)
obj[arr[i]]=“中等”;
对于(;i<容量[0]+容量[1]+容量[2];i++)
obj[arr[i]]=“低”;
不确定这是否是正确的继续方式。有没有指向正确方向的指针?谢谢

片段

var arr=[1,2,3,4,5,6,7,8,9,10].reverse();
var容量=[5,3,2];
var obj={};
对于(变量i=0;i<容量[0];i++)
obj[arr[i]]=“高”;
对于(;i<容量[0]+容量[1];i++)
obj[arr[i]]=“中等”;
对于(;i<容量[0]+容量[1]+容量[2];i++)
obj[arr[i]]=“低”;

控制台日志(obj)您的解决方案有什么问题?你为什么认为你需要做别的事情?我是说,是的,至少有六种方法可以解决这个问题。你已经找到了一个,它很好用,所以…?当然…)但对于有多个正确答案的开放式问题来说,情况并非如此(这其中有一个“过于宽泛”的原因)。可能是在复习完之后,你想在codereview上发表文章。@Soolie:是的。尽管这可能是一个微观优化。如果这方面存在性能问题,我希望现代JavaScript引擎能够对其进行优化(因为在这些循环中没有对
容量的写入)。但如果数量只是1250个数字,坦白说,这不太可能有什么关系。(我是一个恢复过早的微优化器…)我不明白你的1250值。。。你的意思是1,2是低的,3,4,5是中等的,其余的是高的,是吗?在你的1250中,假设每个值都是结果中的一个键,你将有1250个键,1245将是“高”?@PierreGranger不,有一个巨大的表,我需要在其中应用这些值。它包含大约12000个值。我告诉你的数值是1-10。大概是1-1250。知道了?