2017-09-13 7 views
-2

LocalStorage를 사용하여 일부 값을 로컬에 저장하고 있으며 "작업"값 아래에있는 모든 배열의 합계를 얻으려고합니다. 모든 값의 합계를 계산하여 화면에 인쇄하려고합니다.LocalStorage - JavaScript 배열 : 값의 합 :

내 로컬 스토리지 키는 다음과 같습니다 여기

코드가 왜 그렇게 나는 로컬 스토리지 항목을 잡아 내 콘솔에 사용하고 있습니다 :

values = localStorage.getItem("todos"); 
alert(values); 

을 그리고 그것은 반환합니다

[{"due":"15/09/2017","task":"30"},{"due":"16/09/2017","task":"20"}] 

이제 todos.task를 읽으려고하면 항상 NULL 오류가 발생합니다.

어떻게하면됩니까? 나는 TASK 하에서 모든 엔트리를 선택하고 합계의 합을 얻고 싶습니다.

+0

라이브러리 중 하나를 사용하도록 제안 _ "이제 todos.task를 읽으려고하면 항상 NULL 오류가 발생합니다."_이게 무슨 뜻입니까? 당신이 이것을 시도한 곳은 어디입니까? 그것이 가장 중요한 부분입니다. 우리에게 보여주지 않은 코드는 수정할 수 없습니다. – JLRishe

+0

localStorage에 데이터를 저장하는 동안 JSON.parse()를 가져 오는 동안 JSON.stringify() &를 사용하십시오. –

+0

질문에 'todos'를 지정하지 마십시오. 그러나'values ​​[0] .task'에 대해서는 무엇이든 얻을 수 있습니까? values는 배열입니까? –

답변

2

let arr = [{"due":"15/09/2017","task":"30"},{"due":"16/09/2017","task":"20"}] 
 

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

 
console.log(sum);
다음과 같은 방법으로 수행 할 수 있습니다. JSON.parse를 사용하여 해당 데이터를 구문 분석합니다. 그런 다음 모든 요소를 ​​반복하고 작업 값을 추가하십시오. 당신이 이러한 작업의 상당한 금액이있는 경우

+0

고마워요! 매력이 있습니다. 내 편이이 코드입니다. : var values ​​= localStorage.getItem ("todos"); var data = JSON.parse (값); var sum = 0; data.forEach (function (ele) { sum + = (ele.task)}) console.log (sum); – unkn0wnx

4

당신은 당신이 문자열로 데이터를 얻을 것이다 로컬 스토리지에서

var values = '[{"due":"15/09/2017","task":"30"},{"due":"16/09/2017","task":"20"}]'; 
 
var data = JSON.parse(values); 
 
var sum = 0; 
 

 
data.forEach(function(ele){ 
 
sum+=Number(ele.task) 
 
}) 
 
console.log(sum);

+0

고마워요! 그러나 localStorage.getItem ("todos": arr.reduce는 함수가 아닙니다.)에서 데이터를 직접 가져 오는 동안이 오류가 발생합니다. 예제를 사용할 때 완벽하게 작동합니다. 사용하려고 시도한 코드 : let arr = console.log (sum); – unkn0wnx

+0

당신은 확인할 수 있습니까? (예를 들어, 당신의 코드에 typeof arr이 있습니까? – marvel308

+0

문자열 인 경우 arr = JSON.parse (arr)를 수행하기 전에 – marvel308

1

, 내가

-Underscore
-Lodash

let jsonCol = JSON.parse(localStorage.getItem("todos")); 
let sum = 0; 

_.each(jsonCol, function(obj) // Underscore 
{ 
    sum += obj.task; 
}); 


_each(jsonCol, function(obj) // Lodash 
{ 
    sum += obj.task; 
}); 

희망이 도움이 :)