2015-10-12 5 views
-2

Я хочу найти суммы набора чисел от для циклаJavascript для цикла суммирует

настоящего времени у меня

var num = ""; 
for(var i = 1; i < 11; i +=1){ 
    num = num + i; 
} 
console.log(num) 

, который дает мне 12345678910 в консоли JS

Я хочу производить 1+2+3+4+5+6+7+8+9+10=SUM

Я попытался добавить "+" строка: num = num + i + "+"; , но он дает мне 1+2+3+4+5+6+7+8+9+10+

Мой вопрос заключается в том, как добавить «+» и «=» в код и получить сумму.

+3

Вы конкатенации вместо добавления. – MinusFour

+0

Извините, ребята, я новичок в JS, поэтому мой вопрос может быть трудно понять. –

+0

Вы явно указали переменную строку, когда объявили ее с помощью "". – csmckelvey

ответ

1

Если вы хотите + для отображения и фактическая сумма, то сделать это

var realSum = 0; 
var num = "1"; 
for(var i = 2; i < 11; i +=1){ 
    realSum = realSum + i; 
    num = num + "+" + i; 
} 
num = num + "=" + realSum; 
-1

В JavaScript + также может объединять строку, если это то, что кажется, лучше всего - он думает, что вы ставите две строки вместе, так он объединяет их. Сделайте num start как 0 вместо этого, это должно исправить.

+1

Он хочет соединиться ... Может быть ... Не совсем уверен ... – Jonathan

+0

О, я вижу, ну, мои извинения – OliverRadini

+0

Я действительно не вижу необходимости в извинениях, вопрос просто неясен. – Jonathan

-1

Вместо var num="" попробуйте с var num=0, так как этот оператор + используется как конкатенация строк. num=0 выполнит эту работу.

-1

EDIT: Я думал, что вы хотите увидеть "математика" уравнение попробуйте следующее:

var numbers = 0; 

for (var i = 1; i < 11; i += 1){ 
    numbers += i; 
} 

console.log(numbers); 

Попробуйте это:

var numbers = []; 

for (var i = 1; i < 11; i += 1){ 
    numbers.push(i); 
} 

var string = numbers.join("+"); 

string += "=" + eval(numbers.join("+")); 

console.log(string); 
+0

Я отредактировал мой ответ, попробуйте еще раз. –

-1

Если вы на самом деле пытаетесь объединить тогда

num = num + "+" + i; 
0

Попробуйте следующее: http://jsfiddle.net/kx9b7qu7/2

Использование Eval

var num = []; 
    for(var i = 1; i < 11; i +=1){ 
     num.push(i) 
    } 
    var equation = num.join('+'); 
    var sum = eval(equation); 

    console.log('Method 1: ',equation + '=' + sum) 

без использования Eval

var num = []; 
    var sum = 0; 

    for(var i = 1; i < 11; i +=1){ 
     num.push(i) 
     sum += i  
    } 
    var equation = num.join('+'); 

    console.log('Method 2: ',equation + '=' + sum) 
0

Сделать Util из него для дальнейшего использования;) Есть и другие способы, которые используют функциональный подход (уменьшить, карта) и вещей которые пока не получили широкого распространения (генераторы, массивные методы).

Вот некоторые примеры функций для рассмотрения и тонкой настройки:


// kind of usual 

var sumRange = function (from, to, step) { 

    var i, 
     sum = from, 
     str = from; 

    for (i = from + step; i <= to; i += step) { 
    sum += i; 
    str += '+' + i; 
    }; 

    str += '=' + sum; 

    return str; 

}; 

// sum of elements in arithmetic progression 

var sumRangeAP = function (from, to, step) { 

    var i, 
     n, 
     str = from; 

    n = ((to - from)/step) + 1; 

    for (i = from + step; i <= to; i += step) { 
    str += '+' + i; 
    }; 

    str += '=' + ((from + to)/2) * n; 

    return str; 

}; 

// memory efficiency (not creating hell a lot of strings) together with some functional stuff 
// on the other hand it looks like assignment operators (+, +=) win with .join in terms of speed sometimes 
// in many cases, I think, you may not give a shit about whether you use this or that 

var sumRangeME = function (from, to, step) { 

    var i, 
     sum = from, 
     str = [from]; 

    for (i = from + step; i <= to; i += step) { 
    str.push(i); 
    }; 

    return str.join('+') + '=' + str.reduce(function (prevVal, curVal) { return prevVal + curVal; }); 

}; 

console.log(sumRange(0,20,1)); 
console.log(sumRangeAP(0,20,1)); 
console.log(sumRangeME(0,20,1)); 
console.log(sumRange(1,21,1)); 
console.log(sumRangeAP(1,21,1)); 
console.log(sumRangeME(1,21,1)); 
console.log(sumRange(7,36,1)); 
console.log(sumRangeAP(7,36,1)); 
console.log(sumRangeME(7,36,1)); 

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