복붙노트

[JQUERY] 숫자의 배열의 합을 찾는 방법

JQUERY

숫자의 배열의 합을 찾는 방법

해결법


  1. 1.Array.prototype.reduce 이전 요소 값의 합을 현재의 요소 값을 가산 어레이를 통해 반복 할 수있다.

    Array.prototype.reduce 이전 요소 값의 합을 현재의 요소 값을 가산 어레이를 통해 반복 할 수있다.

    CONSOLE.LOG ( [1, 2, 3, 4] .reduce ((a, b) => A + B, 0) ) CONSOLE.LOG ( [] .reduce ((a, b) => A + B, 0) )

    당신은 형식 오류를 얻을 수 CONSOLE.LOG ( [] .reduce ((a, b) => A + b) )

    CONSOLE.LOG ( [1,2,3] .reduce (함수 (ACC, 발) {복귀 ACC + 발}, 0) ) CONSOLE.LOG ( [] .reduce (함수 (ACC, 발) {복귀 ACC + 발}, 0) )

    비 숫자는 가능한 입력이 있다면, 당신은 그것을 처리 할 수 ​​있습니다? CONSOLE.LOG ( [ "하이"1, 2 "개구리"]. (=> A + B) (A, B)을 줄이기 ) numOr0 = N => 때는 isNaN (N)를 보자? 0 : N CONSOLE.LOG ( [ "하이"1, 2 "개구리"]. =>) ((A, B를 줄일 numOr0 (a) + numOr0 (b)) )

    우리는 자바 스크립트 코드의 문자열 표현을 실행하기 위해 평가를 할 수 있습니다. 문자열 배열 Array.prototype.join 변환 함수를 사용하여, 우리는 (6)에, "1 + 2 + 3 '에있는 평가합니다 [1,2,3] 변경.

    CONSOLE.LOG ( 평가 ([1,2,3] .join ( '+')) ) 배열이 내장되어있는 경우 //이 방법은 위험하다 // 사용자 입력에서 그것은 예를 들면 악용 될 수 있으므로 : 평가 ([1, "2, 경보 ("악성 코드!) "]에 가입 ( '+')).

    경고를 표시 당연히 일어날 수있는 최악의 일이 아니다. 나는 그것이 명확하게 생각하지 않는 한 나는이 포함 한 유일한 이유는 답변 Ortund의 질문과 같습니다.


  2. 2.리스프에서 감소에 대한 정확하게 작업 할 수 this'd. 당신은 이러한 종류의 코드를 볼 것입니다 :

    리스프에서 감소에 대한 정확하게 작업 할 수 this'd. 당신은 이러한 종류의 코드를 볼 것입니다 :

    (reduce #'+ '(1 2 3)) ; 6
    

    다행스럽게도, 자바 스크립트에서, 우리는 또한 줄일 수있다! 불행히도, +는 조작자가 아닌 함수이다. 그러나 우리는 그것을 꽤 만들 수 있습니다! 여기에,보기 :

    const sum = [1, 2, 3].reduce(add,0); // with initial value to avoid when the array is empty
    
    function add(accumulator, a) {
        return accumulator + a;
    }
    
    console.log(sum); // 6
    

    하지 그 예쁜가요? :-)

    더 나은! 당신이 ECMAScript를 2015를 사용하는 경우 (ECMAScript를 6 일명),이 꽤 될 수 있습니다 :

    const sum = [1, 2, 3].reduce((partial_sum, a) => partial_sum + a,0); 
    console.log(sum); // 6
    

  3. 3.왜 감소하지? 그것은 일반적으로 비트 카운터 직관적이지만, 합을 찾기 위해 그것을 사용하는 것은 매우 간단합니다 :

    왜 감소하지? 그것은 일반적으로 비트 카운터 직관적이지만, 합을 찾기 위해 그것을 사용하는 것은 매우 간단합니다 :

    var a = [1,2,3];
    var sum = a.reduce(function(a, b) { return a + b; }, 0);
    

  4. 4.

    var arr = [1,2,3,4];
    var total=0;
    for(var i in arr) { total += arr[i]; }
    

  5. 5.

    var total = 0;
    $.each(arr,function() {
        total += this;
    });
    

  6. 6.당신이 Lodash를 사용하는 일이 있다면 당신은 합계 기능을 사용할 수 있습니다

    당신이 Lodash를 사용하는 일이 있다면 당신은 합계 기능을 사용할 수 있습니다

    array = [1, 2, 3, 4];
    sum = _.sum(array); // sum == 10
    

  7. 7.이것은 모든 항목에 걸쳐 반복하고, 합계 변수 각 반복에 추가하여 가능하다.

    이것은 모든 항목에 걸쳐 반복하고, 합계 변수 각 반복에 추가하여 가능하다.

    var array = [1, 2, 3];
    
    for (var i = 0, sum = 0; i < array.length; sum += array[i++]);
    

    자바 스크립트는 블록 범위 지정을 모르는, 그래서 합이 액세스 할 수 있습니다 :

    console.log(sum); // => 6
    

    동일한는 상기와 같이, 그러나 주석 간단한 함수로 제조 :

    function sumArray(array) {
      for (
        var
          index = 0,              // The iterator
          length = array.length,  // Cache the array length
          sum = 0;                // The total amount
          index < length;         // The "for"-loop condition
          sum += array[index++]   // Add number on each iteration
      );
      return sum;
    }
    

  8. 8.

    arr.reduce(function (a, b) {
        return a + b;
    });
    

    참조 : Array.prototype.reduce ()


  9. 9.

    // Given array 'arr'
    var i = arr.length;
    var sum = 0;
    while (--i) sum += arr[i];
    

    이 (I, 길이의 표준 실행 / 위의 평가 () 메소드를 실행 3.604 MS / 및 2.151 MS에 비해 (100 개 랜덤 정상 수치의 배열 1000 뻗은 측정) 평균 1.57 MS / 실행에 걸릴 , ++) 루프.

    방법론 참고 : 자신의 자바 스크립트 엔진이 거의 크롬과 동일하므로이 테스트는 Google 애플리케이션 스크립트를 서버에서 실행되었다.

    편집 : 대신 난 -의 --i은 0.12 밀리 초마다 실행 (난 - 1.7입니다) 저장

    편집 : 이런 조어는이 모든 게시물을 신경 쓰지 않았다. 줄이거 () 메소드는 위에서 언급 한 사용, 그것은 단지 1 MS / 실행합니다.


  10. 10.또한 reduceRight을 사용할 수 있습니다.

    또한 reduceRight을 사용할 수 있습니다.

    [1,2,3,4,5,6].reduceRight(function(a,b){return a+b;})
    

    21로서 출력 된 결과.

    참조 : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/ReduceRight


  11. 11.나 같은 기능 oneliner을 찾고 누구? 이것을 가지고 :

    나 같은 기능 oneliner을 찾고 누구? 이것을 가지고 :

    sum= arr.reduce(function (a, b) {return a + b;}, 0);
    

  12. 12.OK,이 배열 아래를 상상 :

    OK,이 배열 아래를 상상 :

    const arr = [1, 2, 3, 4];
    

    의 내가 어떤 포괄적 인 해답을 여기서 찾을 수 없습니다로 할 수있는 여러 가지 방법을 찾고 시작하자 :

    1) 사용 내장 감소 ()

    function total(arr) {
      if(!Array.isArray(arr)) return;
      return arr.reduce((a, v)=>a + v);
    }
    

    2) 루프 사용

    function total(arr) {
      if(!Array.isArray(arr)) return;
      let totalNumber = 0;
      for (let i=0,l=arr.length; i<l; i++) {
         totalNumber+=arr[i];
      }
      return totalNumber;
    }
    

    3) 고리 중에 사용

    function total(arr) {
      if(!Array.isArray(arr)) return;
      let totalNumber = 0, i=-1;
      while (++i < arr.length) {
         totalNumber+=arr[i];
      }
      return totalNumber;
    }
    

    4) 배열 foreach 문 사용

    function total(arr) {
      if(!Array.isArray(arr)) return;
      let sum=0;
      arr.forEach(each => {
        sum+=each;
      });
      return sum;
    };
    

    와 같이 호출 :

    total(arr); //return 10
    

    배열이 같은 프로토 타입을하지 않는 것이 좋습니다 ...


  13. 13.재미 방법 :

    재미 방법 :

    eval([1,2,3].join("+"))
    

  14. 14.표준 자바 스크립트 솔루션 :

    표준 자바 스크립트 솔루션 :

    var addition = [];
    addition.push(2);
    addition.push(3);
    
    var total = 0;
    for (var i = 0; i < addition.length; i++)
    {
        total += addition[i];
    }
    alert(total);          // Just to output an example
    /* console.log(total); // Just to output an example with Firebug */
    

    이것은 (결과는 5이어야 함) 나를 위해 작동합니다. 나는 이러한 유형의 솔루션에 숨겨진 단점이 없기를 바랍니다.


  15. 15.

    var totally = eval(arr.join('+'))
    

    그런 식으로 당신은 배열에 이국적인 모든 종류의 것들을 넣을 수 있습니다.

    var arr = ['(1/3)','Date.now()','foo','bar()',1,2,3,4]
    

    난 단지 반 농담이야.


  16. 16.나는 자바 스크립트와 초보자 및 일반 코딩,하지만 나는 간단하고 배열의 숫자 합계 쉬운 방법은 다음과 같은 것을 발견 :

    나는 자바 스크립트와 초보자 및 일반 코딩,하지만 나는 간단하고 배열의 숫자 합계 쉬운 방법은 다음과 같은 것을 발견 :

        var myNumbers = [1,2,3,4,5]
        var total = 0;
        for(var i = 0; i < myNumbers.length; i++){
            total += myNumbers[i];
        }
    

    기본적으로, 나는 내장 사용하지 않는 기능이 많은 솔루션을 보지 않았기 때문에이 기여하고 싶어하고,이 방법은 쓰기와 이해하기 쉽다.


  17. 17.자바 스크립트 코드의 짧은 조각이 일을 할 것입니다 :

    자바 스크립트 코드의 짧은 조각이 일을 할 것입니다 :

    var numbers = [1,2,3,4];
    var totalAmount = 0;
    
    for (var x = 0; x < numbers.length; x++) {
    
        totalAmount += numbers[x];
    }
    
    console.log(totalAmount); //10 (1+2+3+4)
    

  18. 18.몇몇 사람들은 Array.prototype으로에 .sum () 메소드를 추가 제안했다. 이것은 일반적으로 당신이 그것을 할 것을 제안하고 있지 않다, 그래서 나쁜 관행으로 간주됩니다.

    몇몇 사람들은 Array.prototype으로에 .sum () 메소드를 추가 제안했다. 이것은 일반적으로 당신이 그것을 할 것을 제안하고 있지 않다, 그래서 나쁜 관행으로 간주됩니다.

    당신은 여전히 ​​다음 일을 주장하는 경우,이 그것을 작성하는 간결한 방법입니다 :

    Array.prototype.sum = function() {return [].reduce.call(this, (a,i) => a+i, 0);}
    

    다음 [1,2] .sum (); // 삼

    프로토 타입에 추가 기능 및 ES5 ES6 함수의 혼합물을 사용하여 구문 화살표되어 있습니다. 기능이 방법은 당신이 운영하고있는 배열에서이 컨텍스트를 얻을 수 있도록하기 위해 선언된다. 나는이 => 간결함을 위해 통화를 줄이고 내부에서 사용.


  19. 19.for 루프를 사용하여

    for 루프를 사용하여

    const array = [1, 2, 3, 4];
    let result = 0;
    
    for (let i = 0; i < array.length - 1; i++) {
      result += array[i];
    }
    
    console.log(result); // Should give 10
    

    심지어 foreach 루프 :

    const array = [1, 2, 3, 4];
    let result = 0;
    
    array.forEach(number => {
      result += number;
    })
    
    console.log(result); // Should give 10
    

    간단하게하기 위해 사용 감소 :

    const array = [10, 20, 30, 40];
    const add = (a, b) => a + b
    const result = array.reduce(add);
    
    console.log(result); // Should give 100
    

  20. 20.초기 값으로 필요가 없습니다! 어떤 초기 값이 전달되지 않은 경우이므로, 콜백 함수는리스트의 첫 번째 요소를 호출하지 않고, 첫 번째 요소 대신 초기 값으로 전달된다. 아주 멋진 기능 :

    초기 값으로 필요가 없습니다! 어떤 초기 값이 전달되지 않은 경우이므로, 콜백 함수는리스트의 첫 번째 요소를 호출하지 않고, 첫 번째 요소 대신 초기 값으로 전달된다. 아주 멋진 기능 :

    [1, 2, 3, 4].reduce((a, x) => a + x) // 10
    [1, 2, 3, 4].reduce((a, x) => a * x) // 24
    [1, 2, 3, 4].reduce((a, x) => Math.max(a, x)) // 4
    [1, 2, 3, 4].reduce((a, x) => Math.min(a, x)) // 1
    

  21. 21.하나는이 구현의 아름다움을 이해하는 데 시간이 걸릴 수 있지만 여기에 사용 스택 알고리즘이 우아한 한 줄의 솔루션입니다.

    하나는이 구현의 아름다움을 이해하는 데 시간이 걸릴 수 있지만 여기에 사용 스택 알고리즘이 우아한 한 줄의 솔루션입니다.

    const getSum = arr => (arr.length === 1) ? arr[0] : arr.pop() + getSum(arr);
    
    getSum([1, 2, 3, 4, 5]) //15
    

    기본적으로,이 함수는 배열 어레이가 정확히 하나 개의 항목이 포함되어 있는지 여부를 확인을 받아 들인다. false의 경우, 그것은 스택의 마지막 항목을 팝업하고 업데이트 된 배열을 반환합니다.

    이 코드의 아름다움 함수 도착 [0]이 검사하는 무한 루프를 방지하기 위해 포함된다. 그것이 마지막 항목에 도달하면, 그것은 전체 합계를 반환합니다.


  22. 22.당신은) (람다 식 방법을 줄일 결합 할 수 있습니다 :

    당신은) (람다 식 방법을 줄일 결합 할 수 있습니다 :

    [1, 2, 3, 4].reduce((accumulator, currentValue) => accumulator + currentValue);
    

  23. 23.사용 감소

    사용 감소

    도착하자 = [1, 2, 3, 4; 합이 = ((V, I) => (V) + I) arr.reduce하자; CONSOLE.LOG (합);


  24. 24.나는 모든 대답은 '감소'솔루션을가는 것을 보았다

    나는 모든 대답은 '감소'솔루션을가는 것을 보았다

    var array = [1,2,3,4]
    var total = 0
    for (var i = 0; i < array.length; i++) {
        total += array[i]
    }
    console.log(total)
    

  25. 25.배열이 문자열로 구성하면 하나의 코드를 변경해야합니다. 어레이는 데이터뱅크 요청에서 그 결과 인 경우에, 케이스 일 수있다. 이 코드는 작동합니다 :

    배열이 문자열로 구성하면 하나의 코드를 변경해야합니다. 어레이는 데이터뱅크 요청에서 그 결과 인 경우에, 케이스 일 수있다. 이 코드는 작동합니다 :

    alert(
    ["1", "2", "3", "4"].reduce((a, b) => Number(a) + Number(b), 0)
    );
    

    여기서, [ "1", "2", "3", "4"] IST 문자열 배열 및 기능 번호 () 숫자 스트링을 변환한다.


  26. 26.정렬 배열 시작 합 형태 작은 번호 (니펫 nonsort 방송과의 차이)

    정렬 배열 시작 합 형태 작은 번호 (니펫 nonsort 방송과의 차이)

    [...arr].sort((a,b)=>a-b).reduce((a,c)=>a+c,0)
    

    도착 =. 6.9, 0.1, 0.1, 0.1, 0.1] 합 arr.reduce = ((a, c) => A + C, 0) sortSum = ... 도착] .sort ((a, b) => A-B) .reduce ((a, c) => A + C, 0) CONSOLE.LOG ( '합계', 합); 을 console.log ( 'sortSum', sortSum); CONSOLE.LOG ( '합 sortSum ==', 합계 == sortSum); // .sort 우리는 ((a, b) => A-B) 대신 .sort () 때문에 사용 // 그 문자열과 같은 두 번째 치료 요소 (그래서 잘못된 방법으로) // 예컨대 [1,10,9,20,93] .sort () -> [1, 10, 20, 9, 93]

    숫자의 다차원 배열 arr.flat (무한대)를 사용

    도착 = [[[1,2,3,4], [1,2,3,4], [1,2,3,4], [1,2,3,4], [1,2,3,4], [1,2,3,4]]; 합 = arr.flat (무한대) .reduce ((a, c) => A + C, 0); CONSOLE.LOG (합); // (60)


  27. 27.여기에 트릭 쿨, 안 배열의 길이를 캐싱 안전 기존의 답변이 많은 니트 픽을 가지고있다.

    여기에 트릭 쿨, 안 배열의 길이를 캐싱 안전 기존의 답변이 많은 니트 픽을 가지고있다.

    function arraySum(array){
      var total = 0,
          len = array.length;
    
      for (var i = 0; i < len; i++){
        total += array[i];
      }
    
      return total;
    };
    
    var my_array = [1,2,3,4];
    
    // Returns 10
    console.log( arraySum( my_array ) );
    

    JS 컴파일러 길이를 계산하는 루프의 각 반복으로 배열 거쳐야 배열의 길이를 캐싱없이, 대부분의 경우 불필요한 오버 헤드이다. 그것은 한 후 우려의 작은 있도록 V8과 현대적인 브라우저의 많은, 우리를 위해이 최적화하지만이 간단한 캐싱 혜택이 구형 장치가있다.

    길이 변화에 따라 캐싱의 경우 예상치 못한 부작용을 일으킬 수있는 당신이 만약있는 거 당신이 길이를 캐싱,하지만 목적의 재사용 기능을 위해 배열을 가지고 함께의을 값을 추가하는 것입니다있는 이유를 모르고 위대한 맞습니다.

    다음은이 arraySum 기능을위한 CodePen 링크입니다. http://codepen.io/brandonbrule/pen/ZGEJyV

    그것은이 나와 함께 붙어 오래된 사고 방식입니다 가능하지만, 나는이 상황에서 그것을 사용하는 단점이 표시되지 않습니다.


  28. 28.사람들은 정말 좋은 답변이지만, 경우에 대비 숫자는 질문 (1,2,3,4) 쉽게 공식을 적용하여 해당 작업을 수행 할 수 있습니다에 같은 순서에있는 경우 (N * (N + 1)) / 2, 여기서 n 마지막 번호는

    사람들은 정말 좋은 답변이지만, 경우에 대비 숫자는 질문 (1,2,3,4) 쉽게 공식을 적용하여 해당 작업을 수행 할 수 있습니다에 같은 순서에있는 경우 (N * (N + 1)) / 2, 여기서 n 마지막 번호는


  29. 29.

    Object.defineProperty(Object.prototype, 'sum', {
        enumerable:false,
        value:function() {
            var t=0;for(var i in this)
                if (!isNaN(this[i]))
                    t+=this[i];
            return t;
        }
    });
    
    [20,25,27.1].sum()                 // 72.1
    [10,"forty-two",23].sum()          // 33
    [Math.PI,0,-1,1].sum()             // 3.141592653589793
    [Math.PI,Math.E,-1000000000].sum() // -999999994.1401255
    
    o = {a:1,b:31,c:"roffelz",someOtherProperty:21.52}
    console.log(o.sum());              // 53.519999999999996
    

  30. 30.이것은 훨씬 더 쉽게

    이것은 훨씬 더 쉽게

    function sumArray(arr) {
        var total = 0;
        arr.forEach(function(element){
            total += element;
        })
        return total;
    }
    
    var sum = sumArray([1,2,3,4])
    
    console.log(sum)
    
  31. from https://stackoverflow.com/questions/1230233/how-to-find-the-sum-of-an-array-of-numbers by cc-by-sa and MIT license