2016-05-04 29 views
0

配列内の長さまたは合計オブジェクトを取得しようとしています。 slickEventDataオブジェクトを作成し、このオブジェクトをeventsArrayにプッシュします。 私はオブジェクトを含む配列で終わる。 この配列内のslickEventDataオブジェクトの合計量を取得したいとします。 私は長さを使用すると、間違った番号を取得する、私はキーの総量を得る?オブジェクトではありません。オブジェクト内の配列内のオブジェクト全体を取得

マイコード

var slickEventData = {} 
console.log(event); 

slickEventData.module = "slick_module" 
slickEventData.eventType = event.type; 
slickEventData.leadboxId = "a"//container.getAttribute("data-leadbox-id"); 
slickEventData.advertId = advertId; 
slickEventData.length = "length of event" 
slickEventData.time = Date.now(); 
slickEventData.posted = "postedStatus" 
eventsArray.push(slickEventData) 

console.log("events Array " + JSON.stringify(eventsArray)) 
console.log("events Array length " + eventsArray.length) 

if (!sessionStorage.events) { 
    console.log("no old events found") 
    sessionStorage.events = eventsArray; 
    console.log(sessionStorage.events); 
} 

else if (sessionStorage.events) { 
    var oldEvents = sessionStorage.events; 
    console.log("old events length " + oldEvents.length); 
    console.log("updated events array met oldData " + eventsArray); 
    alert(JSON.stringify(oldEvents)); 
    //loop thru old events to add them to current events and add these to the sessionStorage 
    //postTrackingData(sessionStorage.events); 
} 
//sessionStorage.events = eventsArray;// add events to storage 
console.log("session = " + (JSON.stringify(sessionStorage))) 

これらは私の試みです。私は、oldEvents.lengthを使用すると、15個のオブジェクトを返すオブジェクトとして、すべてのキーと値と配列を数えていると推測しています。eventsArray.lengthが正しい値を返します。 この配列をsessionStorage.eventsに追加すると、これが上手くいくのでしょうか?

oldEventの中にいくつのオブジェクトがあるのか​​調べるにはどうすればよいですか?

私はこの完全に間違っ

編集やっているかもしれません:それは eventsArray戻り、[オブジェクトのオブジェクト]、[オブジェクトのオブジェクト]などので、複数のオブジェクトを思わ

oldEvents戻り、[オブジェクトのオブジェクト]ありませんので、複数のオブジェクトを。

彼らは同じものを返すはずですか? eventsArrayをsessionStorageに追加して取得しています。

私の目標は、イベントが発生したときにイベントをプッシュし、リフレッシュ間に緩めないようにすることです。

+0

配列内の内容は関係ありません。 'array.length'は常に配列内のアイテム/オブジェクトの数を返します。 'eventsArray'を正しく初期化していますか? – Kushagra

+0

console.log(oldEvents)ステートメント(JSON.stringifyなし)を追加してみます。 ChromeまたはFirefoxでは、配列をブラウズしてコンテンツを便利に確認することができます。配列に期待するものが含まれていることを確認してください。 – newBee

+0

Hmm oldEventsは[object Object]を返します。しかし、eventsArrayは[オブジェクトオブジェクト]、[オブジェクトオブジェクト]などを返す。 – JSB

答えて

1

[object object]は、.toString()をオブジェクトに呼び出すと得られるものです。

devtoolsで文字列を展開することはできません。私はあなたの意図しない型変換をする角度を取るだろう。

このsessionStorage.events = eventsArrayoldEvents = sessionStorage.eventsは私には疑わしいです。

LocalStorageとSessionStorageは、キー値のペアの文字列のみを受け入れます。あなたのためにオブジェクトを文字列にするのではなく、.toString()と呼んでください。私は問題はあなたが文字列配列を格納していないと思うので、あなたが配列ではなく文字列を取得するときには、文字列の.lengthを呼び出してください。

私は、これらの変更を提案する可能性があります。

//Setting storage items 
sessionStorage.setItem('events', JSON.stringify(eventsArray)); 

//reading storage items 
JSON.parse(sessionStorage.getItem('events')); 

EDITを:これは直接質問に答えることではないかもしれないが、それは貴重な情報とコメントで説明するには大きすぎる(私は信じて)まだあります。

+0

はい私はちょうど私が間違っていたことを考え出した。今私は明示的にそれを文字列化し、後に解析するつもりです。あなたが問題を解決したので、私はこれを答えとしてマークしたと思った。 – JSB

関連する問題