convert list of relative widths to pixel widths

Posted by mkoryak on Stack Overflow See other posts from Stack Overflow or by mkoryak
Published on 2010-04-12T15:24:50Z Indexed on 2010/04/12 16:03 UTC
Read the original article Hit count: 284

Filed under:
|

This is a code review question more then anything.

I have the following problem:

Given a list of relative widths (no unit whatsoever, just all relative to each other), generate a list of pixel widths so that these pixel widths have the same proportions as the original list.

input: list of proportions, total pixel width.

output: list of pixel widths, where each width is an int, and the sum of these equals the total width.

Code:

var sizes = "1,2,3,5,7,10".split(","); //initial proportions
var totalWidth = 1024; // total pixel width

var sizesTotal = 0;
for (var i = 0; i < sizes.length; i++) {
 sizesTotal += parseInt(sizes[i], 10);
}

if(sizesTotal != 100){
 var totalLeft = 100;;
 for (var i = 0; i < sizes.length; i++) {
  sizes[i] = Math.floor(parseInt(sizes[i], 10) / sizesTotal * 100);
  totalLeft -= sizes[i];
 }
 sizes[sizes.lengh - 1] = totalLeft;
}

totalLeft = totalWidth;
for (var i = 0; i < sizes.length; i++) {
 widths[i] = Math.floor(totalWidth / 100 * sizes[i]) 
 totalLeft -= widths[i];
}
widths[sizes.lenght - 1] = totalLeft;

//return widths which contains a list of INT pixel sizes

© Stack Overflow or respective owner

Related posts about code-review

Related posts about JavaScript