Javascript 将相对宽度列表转换为像素宽度
这是一个代码审查问题,比什么都重要 我有以下问题: 给定一个相对宽度列表(没有任何单位,只是彼此相对),生成一个像素宽度列表,使这些像素宽度具有与原始列表相同的比例 输入:比例列表,总像素宽度 输出:像素宽度列表,其中每个宽度是一个整数,这些宽度的总和等于总宽度 代码:Javascript 将相对宽度列表转换为像素宽度,javascript,Javascript,这是一个代码审查问题,比什么都重要 我有以下问题: 给定一个相对宽度列表(没有任何单位,只是彼此相对),生成一个像素宽度列表,使这些像素宽度具有与原始列表相同的比例 输入:比例列表,总像素宽度 输出:像素宽度列表,其中每个宽度是一个整数,这些宽度的总和等于总宽度 代码: var size=“1,2,3,5,7,10”。拆分(“,”)//初始比例 var totalWidth=1024;//总像素宽度 var-sizesTotal=0; 对于(变量i=0;i
var size=“1,2,3,5,7,10”。拆分(“,”)//初始比例
var totalWidth=1024;//总像素宽度
var-sizesTotal=0;
对于(变量i=0;i
- 如果
开始时声明为数字列表,那么为什么必须调用size
parseInt()
- 你在最后一行拼错了“长度”
宽度在哪里声明
- 这如何解释舍入问题?哦,我明白了;这是最后一行;那么,您不需要添加
,而不只是覆盖其中的任何内容吗totaleft
- 将其抽象为一个函数可能是值得的。。。我把它清理了一下。而且我不确定
sizesTotal!=100…
所有的东西都是关于生活的,所以我把它弄出来
function pixelWidths(proportions, totalPx) {
var pLen = proportions.length,
pTotal = 0,
ratio, i;
for ( i = -1; ++i < pLen; )
pTotal += proportions[i];
ratio = totalPx / pTotal;
pTotal = 0;
for ( i = -1; ++i < pLen; )
pTotal += proportions[i] = ~~(proportions[i] * ratio);
proportions[pLen-1] += totalPx - pTotal;
return proportions;
}
pixelWidths([1,2,3,5,7,10], 1024); // => [36, 73, 109, 182, 256, 368]
您的前3点是因为我从其他代码中删除了此代码,并且没有花足够的时间使其看起来独立。我试图通过不计算每个循环中的最后一个度量来解释舍入问题,但是我给最后一个度量提供了可用的宽度是的,这看起来应该是可行的。我喜欢这个把戏。谢谢
function pixelWidths(proportions, totalPx) {
var pLen = proportions.length,
pTotal = 0,
ratio, i;
for ( i = -1; ++i < pLen; )
pTotal += proportions[i];
ratio = totalPx / pTotal;
pTotal = 0;
for ( i = -1; ++i < pLen; )
pTotal += proportions[i] = ~~(proportions[i] * ratio);
proportions[pLen-1] += totalPx - pTotal;
return proportions;
}
pixelWidths([1,2,3,5,7,10], 1024); // => [36, 73, 109, 182, 256, 368]
~~'2'; // => 2
~~'2.333'; // => 2
~~null; // => 0