programing

숫자 배열의 합계를 구하는 방법

projobs 2022. 10. 1. 14:39
반응형

숫자 배열의 합계를 구하는 방법

된 배열 " " "[1, 2, 3, 4]합은 어떻게 알 수 있을까요? , , , , , , , , , , , , , , 이 경우 (이 경우, , , , , , , , , , , , )가 됩니다10

유용하다고 생각했는데 어떻게 구현해야 할지 모르겠어요.

이 일이 딱 맞는 것 같아reduce.

ECMAScript 2015(ECMAScript 6이라고도 함)를 사용하는 경우:

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

이전 JS의 경우:

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

예쁘죠? :-)

권장(디폴트값으로 감소

Array.protype.reduce를 사용하여 배열을 반복하고 현재 요소 값을 이전 요소 값의 합계에 추가할 수 있습니다.

console.log(
  [1, 2, 3, 4].reduce((a, b) => a + b, 0)
)
console.log(
  [].reduce((a, b) => a + b, 0)
)

디폴트값 없음

TypeError가 표시된다.

console.log(
  [].reduce((a, b) => a + b)
)

ES6의 화살표 기능 이전

console.log(
  [1,2,3].reduce(function(acc, val) { return acc + val; }, 0)
)

console.log(
  [].reduce(function(acc, val) { return acc + val; }, 0)
)

숫자가 아닌 입력

숫자가 아닌 입력이 가능한 경우 처리하시겠습니까?

console.log(
  ["hi", 1, 2, "frog"].reduce((a, b) => a + b)
)

let numOr0 = n => isNaN(n) ? 0 : n

console.log(
  ["hi", 1, 2, "frog"].reduce((a, b) => 
    numOr0(a) + numOr0(b))
)

권장되지 않는 위험한 평가 사용

eval을 사용하여 JavaScript 코드의 문자열 표현을 실행할 수 있습니다.Array.protype을 사용합니다.join 함수를 사용하여 어레이를 문자열로 변환하고 [1,2,3]을 "1+2+3"으로 변경합니다. 이 값은 6으로 평가됩니다.

console.log(
  eval([1,2,3].join('+'))
)

//This way is dangerous if the array is built
// from user input as it may be exploited eg: 

eval([1,"2;alert('Malicious code!')"].join('+'))

물론 경고를 표시하는 것이 일어날 수 있는 최악의 일은 아닙니다.내가 이것을 포함시킨 유일한 이유는 Ortund의 질문에 대한 답변으로서 그것이 명확해졌다고 생각하지 않기 때문이다.

왜 줄이지 않는가?일반적으로는 약간 반감이 있지만, 합계를 찾는 데 사용하는 것은 매우 간단합니다.

var a = [1,2,3];
var sum = a.reduce(function(a, b) { return a + b; }, 0);
var arr = [1, 2, 3, 4];
var total = 0;
for (var i in arr) {
  total += arr[i];
}
var total = 0;
$.each(arr,function() {
    total += this;
});

나처럼 기능하는 오네라이너를 찾는 사람?

전제 조건:

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

다음은 현대 JS용 오넬라이너입니다.

sum = arr.reduce((a, b) => a + b, 0);

(화살표 기능이 없는 오래된 IE를 지원해야 하는 경우:

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

여기서 0은 초기값이므로 필요에 따라 오프셋으로 사용할 수 있습니다.또한 이 초기값이 필요합니다.그렇지 않으면 빈 배열로 함수를 호출하면 오류가 발생합니다.

Lodash를 사용하는 경우 Sum 함수를 사용할 수 있습니다.

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

은 모든마다 을 합니다.sum--. - - -

var array = [1, 2, 3];

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

블록 JavaScript는 블록 스코핑을 인식하지 않습니다.sum용용: :

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;
}
arr.reduce(function (a, b) {
    return a + b;
});

레퍼런스:Array.protype.reduce()

예를 들어, 다음과 같은 어레이가 있다고 가정해 보겠습니다.

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

포괄적인 답변을 찾을 수 없었기 때문에 다양한 방법을 알아보겠습니다.

1) 빌트인 reduce() 사용

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) while loop 사용

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

4) 각각에 어레이 사용

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

이렇게 불러주세요.

total(arr); //return 10

어레이에는 이러한 시제품을 사용하지 않는 것이 좋습니다.

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

재미있는 접근법:

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

표준 JavaScript 솔루션:

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가 됩니다.이런 해결책에 숨겨진 단점이 없기를 바랍니다.

저는 JavaScript와 코딩은 초보자이지만 배열 내의 숫자를 단순하고 쉽게 합칠 수 있는 방법은 다음과 같습니다.

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

기본적으로는 빌트인 기능을 사용하지 않는 솔루션이 별로 없고 쓰기 쉽고 이해하기 쉽기 때문에 기여하고 싶었습니다.

다음 코드를 사용해 볼 수 있습니다.

[1, 2, 3, 4].reduce((pre,curr)=>pre+curr,0)

사용하다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

쉽게 하려면 , 「」를 합니다.reduce:

const array = [10, 20, 30, 40];
const add = (a, b) => a + b
const result = array.reduce(add);

console.log(result); // Should give 100

몇몇 사람들은 이 웹 사이트를.sum()의 메서드Array.prototype이것은 일반적으로 나쁜 관행으로 간주되기 때문에 당신에게 그것을 하라고 권하는 것은 아닙니다.

그래도 계속 그렇게 해야 한다면, 다음과 같이 간단하게 기술할 수 있습니다.

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

'어,어,어,어,어,어,어,어,어,어,어,어,어,어,어,어,어.[1,2].sum(); // 3

프로토타입에 추가된 기능은 ES5 및 ES6 기능과 화살표 구문을 혼합하여 사용합니다.function가 Method "Private" 를 할 수 됩니다.this를 참조해 주세요.Array★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★=>하게 하기 위해reducediscl.discl.discl을 클릭합니다.

ES6:

let total = 0;

for (let value of [1, 2, 3, 4]) {
    total += value; 
}

JavaScript 코드의 짧은 조각으로 다음 작업을 수행할 수 있습니다.

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)
var totally = eval(arr.join('+'))

이렇게 하면 온갖 이국적인 것들을 배열에 넣을 수 있습니다.

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

농담 반이에요.

reduce

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

let sum = arr.reduce((v, i) => (v + i));

console.log(sum);

""는 필요 .initial value '아니오'가 없다면initial value '''가 이루어짐,callback function첫 번째 "이러한 요소"로 됩니다.initial value. 매우 cOOL 기능:)

[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

스택 알고리즘을 사용하는 우아한 원라이너 솔루션을 소개합니다.다만, 이 실장의 메리트를 이해하는 데는 시간이 걸릴 수 있습니다.

const getSum = arr => (arr.length === 1) ? arr[0] : arr.pop() + getSum(arr);

getSum([1, 2, 3, 4, 5]) //15

기본적으로 이 함수는 어레이를 받아들이고 어레이에 정확히 하나의 항목이 포함되어 있는지 확인합니다.false일 경우 스택에서 마지막 항목을 팝업하고 업데이트된 어레이를 반환합니다.

이 스니펫의 장점은 함수가 다음을 포함한다는 것입니다.arr[0]이치노마지막 항목에 도달하면 전체 금액을 반환합니다.

정확성.

배열 및 시작 합계를 최소 수치로 정렬합니다(스니펫은 비소트와의 차이를 나타냄).

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

arr=[.6,9,.1,.1,.1,.1]

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

console.log('sum:     ',sum);
console.log('sortSum:',sortSum);
console.log('sum==sortSum :', sum==sortSum);

// we use .sort((a,b)=>a-b) instead .sort() because
// that second one treat elements like strings (so in wrong way)
// e.g [1,10,9,20,93].sort() -->  [1, 10, 20, 9, 93]

다차원 숫자 배열의 경우 사용arr.flat(Infinity)

arr= [ [ [1,2,3,4],[1,2,3,4],[1,2,3,4] ],
       [ [1,2,3,4],[1,2,3,4],[1,2,3,4] ] ];
      
sum = arr.flat(Infinity).reduce((a,c)=> a+c,0);

console.log(sum);  // 60

정말 좋은 답입니다만, 질문(1,2,3,4)과 같이 숫자가 순서대로 되어 있는 경우는, (n*(n+1)/2를 적용하면 간단하게 할 수 있습니다.여기서 n은 마지막 숫자입니다.

reduce() 메서드를 람다 식과 조합할 수 있습니다.

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

reduce() 포함

[1, 2, 3, 4].reduce((a, b) => a + b, 0); // 10

With For Each()

let sum = 0;
[1, 2, 3, 4].forEach(n => sum += n);
sum; // 10

파라미터 포함

function arrSum(arr) { 
  sum = 0;  
  arr.forEach(n => sum += n); 
  return sum; 
}

arrSum([1, 2, 3, 4]) // 10

나는 모든 답이 '불필요한' 해결책으로 가는 것을 보았다.

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

매우 단순한

스텝 1은 다음과 같은 어레이가 필요합니다.

const arrayNumber = [500,152,154,1555,12445];

스텝 2(이 스텝은 무시해도 됩니다)스텝은 테이블 내의 모든 값이 다음 값을 나타내는 수치입니다.

let newArray = [];
for (let i = 0; i < arrayNumber.length; i++) {
        newArray.push(parseInt(arrayNumber[i], 10));
      }

순서 3

const sumInArray = dataData.reduce( (a, b) => a + b);

마침내.

console.log(sumInArray);

기본 프로세스를 이해하기 위한 가장 간단한 답변:

let array = [10, 20, 30, 40, 50]
let total = 0

for(let i in array)
{
    total += array[i]
}

console.log(total)

기본 프로세스에 대해 이미 잘 알고 있다면 임베디드 방식으로 시간을 절약할 수 있습니다.

let array = [10, 20, 30, 40, 50]
let total = array.reduce((x, y) => x + y)
console.log(total)

언급URL : https://stackoverflow.com/questions/1230233/how-to-find-the-sum-of-an-array-of-numbers

반응형