2014-09-01 3 views
-1

У меня есть массив чисел, называемых CM, которые я бы тогда хотели вычислить КАЖДЫЙ элемент массива в процентах от другого числа, позволяет называть его totalOfCM (сумма всех чисел в массиве CM).Застрял в массиве рассол

Есть ли способ, которым я могу пройти через этот массив и поместить результат в другой массив без необходимости вручную выполнять вычисления?

Это то, что я делаю в данный момент, но я уверен, что может быть проще:

$(document).ready(function() { 

    var CM = [0,5,2,0,0,0]; 

    var totalOfCM = 0; 
    for (var i = 0; i < CM.length; i++) { 
     totalOfCM += CM[i] << 0; 
    } 

    var percentage1CM = parseInt((CM[0]/totalOfCM) * 100) 
    var percentage2CM = parseInt((CM[1]/totalOfCM) * 100) 
    var percentage3CM = parseInt((CM[2]/totalOfCM) * 100) 
    var percentage4CM = parseInt((CM[3]/totalOfCM) * 100) 
    var percentage5CM = parseInt((CM[4]/totalOfCM) * 100) 
    var percentage6CM = parseInt((CM[5]/totalOfCM) * 100) 

    alert(percentage1CM); 
    alert(percentage2CM); 
    alert(percentage3CM); 
    alert(percentage4CM); 
    alert(percentage5CM); 
    alert(percentage6CM); 
}); 

Мой текущий Jquery первый Tallys вверх SUM этого массива, а затем я вручную отрабатывал процент каждого элемента массива :(Вот это fiddle того, что я делаю.

Пожалуйста, дайте мне знать, если мне нужно сделать еще объяснить?

Может кто-то пожалуйста, руководство меня в правильном направлении?

Благодаря мельница,

Майк

+0

какой-либо конкретной причины, почему вы делаете '<< 0' там? –

+0

нет, что так когда-либо :) Я получил это от другой нити SO. Я новичок в Jqeury. haha – Mike

+0

Нельзя использовать '<< 0'. Вы хотите это http://jsfiddle.net/svv6c9gc/ – Satpal

ответ

1

Используйте простой для петли.

var percentage = []; //Declare an array 
for (var i = 0; i < CM.length; i++) { 
    percentage.push(parseInt((CM[i]/totalOfCM) * 100)); //Add calculated percentage 
} 

DEMO

+1

Большое спасибо! – Mike

2

Это должно сделать это:

var CM = [0,5,2,0,0,0]; 

// calculate sum first 
var sum = CM.reduce(function(prev, current) { 
    return prev + current; 
}, 0); 

var percentages = CM.map(function(value) { 
    return value * 100/sum; 
}); 

Затем percentages массив с процентом, соответствующей каждому значению CM.

+0

большое спасибо :) – Mike

0

Попробуйте использовать $.map(),

$(document).ready(function() { 
    var CM = [0, 5, 2, 0, 0, 0]; 
    var totalOfCM = 0; 
    for (var i = 0; i < CM.length; i++) { 
     totalOfCM += CM[i] << 0; 
    } 
    var arr=$(CM).map(function(i,v){ 
     return v*100/totalOfCM; 
    }).get(); 
    console.log(arr);// your final array 
}); 

Demo

Смежные вопросы