2017-09-21 18 views
0

配列の最初の要素を削除する際に問題があります。JavaScriptの配列の最初の要素/配列を削除します。

短いことが、これは私がコンソールにそれを表示した場合、私の配列がどのように見えるかです:

(11) [Array(4), Array(4), Array(4), Array(4), Array(4), Array(4), Array(4), Array(4), Array(4), Array(4), Array(4)] 
0 : (4) ["2017-09-20T16:00:00-07:00", 188.125, 0, 1] 
1 : (4) ["2017-09-20T17:00:00-07:00", 123.125, 0, 1] 
2 : (4) ["2017-09-20T18:00:00-07:00", 114.25, 0, 1] 
3 : (4) ["2017-09-20T19:00:00-07:00", 115, 0, 1] 
4 : (4) ["2017-09-20T20:00:00-07:00", 113.25, 0, 1] 
5 : (4) ["2017-09-20T21:00:00-07:00", 115.625, 0, 1] 
6 : (4) ["2017-09-20T22:00:00-07:00", 114.75, 0, 1] 
7 : (4) ["2017-09-20T23:00:00-07:00", 114, 0, 1] 
8 : (4) ["2017-09-21T00:00:00-07:00", 112.625, 0, 1] 
9 : (4) ["2017-09-21T01:00:00-07:00", 108.375, 0, 1] 
10 : (4) ["2017-09-21T02:00:00-07:00", 111.125, 0, 1] 
length : 11 
__proto__ : Array(0) 

私は最初のものを削除したい、0は、私が.shift()を使用してみましたが、うまくいきませんでした。これを解決する方法任意のアイデア

TypeError: Cannot read property '0' of undefined 
    at bundle.js:1554 
    at Function._.map._.collect (vendor.js:11761) 
    at renderChart (bundle.js:1547) 
    at bundle.js:1611 
    at Scope.$digest (vendor.js:34716) 
    at Scope.$apply (vendor.js:34986) 
    at bundle.js:259 
    at vendor.js:14387 
    at _fulfilled (vendor.js:13992) 
    at self.promiseDispatch.done (vendor.js:14021) 

:私の配列のように

myArray.dataと呼ばれ、私はmyArray.data.shift()を試してみましたが、私は、このエラーメッセージが表示されますか?

その後編集:

コードは、チャート生成機能内にある、これは全体の抜粋です:

data: { 
    type: chartType, 
    columns: [ 
     ['x'].concat(_.map(myArray.data, function (dataPoint) { 

     const x = (myArray.data).shift(); 
     console.log(myArray.data);   
     console.log(x); 

      return moment(dataPoint[0]).valueOf(); 
     })), 
     ['Expected'].concat(_.map(myArray.data, function (dataPoint) { 
      return dataPoint[1]; 
     })), 
     ['Actual'].concat(_.map(myArray.data, function (dataPoint) { 
      return dataPoint[1]; 
     })) 
    ], 
    x: 'x' 
}, 
+0

他にどのようなコードがありますか? 'シフト'は私にはこのエラーを与えてはいけません。 – putvande

+0

@putvande、私はそれを –

+0

と追加しました。それは 'dataPoint [0]'について文句を言うようです。 – putvande

答えて

0

あなたはmyArray.data.splice(0, 1) usingz最初の配列項目を削除することができますが、エラーが伝えます配列メソッドを未定義の値に適用しようとしています。おそらく、$スコープは、私は結果がArray.shiftを(使用して欲しかっ再現することができますまだ

+0

「シフト」の何が問題なのですか? – putvande

3

を値を受信して​​いない)

let arr = [ 
 
["2017-09-20T16:00:00-07:00", 188.125, 0, 1], 
 
["2017-09-20T17:00:00-07:00", 123.125, 0, 1], 
 
["2017-09-20T18:00:00-07:00", 114.25, 0, 1], 
 
["2017-09-20T19:00:00-07:00", 115, 0, 1], 
 
["2017-09-20T20:00:00-07:00", 113.25, 0, 1], 
 
["2017-09-20T21:00:00-07:00", 115.625, 0, 1], 
 
["2017-09-20T22:00:00-07:00", 114.75, 0, 1], 
 
["2017-09-20T23:00:00-07:00", 114, 0, 1], 
 
["2017-09-21T00:00:00-07:00", 112.625, 0, 1], 
 
["2017-09-21T01:00:00-07:00", 108.375, 0, 1], 
 
["2017-09-21T02:00:00-07:00", 111.125, 0, 1] 
 
]; 
 

 
console.log(arr[0]); 
 

 
arr.shift(); 
 

 
console.log(arr[0]);

+1

私もそれをやった。 'shift'はうまくいくはずです... – lpg

+0

私の場合、それは動作しません...私はコードの別のスニペットを追加しました。たぶん今より明らかです –

0
.shift() is working fine. 

問題が起こっている、あなたの配列でありますシフトするには、myArray.dataがデータで構成されているかどうかを確認します。エラーは、未定義(null)オブジェクトから値をシフトしようとしています。

splice(0,1) also working fine