前提・実現したいこと
jQueryで、配列を更新する作業に取り組んでいます。
該当のソースコードで、ajax()
の中にあるarrNew
をコンソールに出すときに、[3]
だけを表示したいです。
発生している問題・エラーメッセージ
ajax()
の中にあるarrNew
をご覧ください。
この行はupdate()
より上なのに、update()
によってmerge
が実行されて[3,2,1]
になってしまうのが問題です。
ここはupdate()
実行前の値として、[3]
が取得されるハズではないのでしょうか?
エラーはありません
該当のソースコード
sample : https://jsfiddle.net/z57m8xpk/
jQuery
1function get(){ 2 var arr = [2,1]; 3 console.log('get() - arr : ', arr ); 4 return arr; 5} 6 7function ajax(){ 8 var responce = '[3]'; 9 console.log('ajax() - responce', responce ); 10 const arrNew = JSON.parse( responce ); 11 console.log('ajax() - arrNew【問題の値】 :', arrNew ); // [3]のハズでは? 12 update( 'merge', arrNew ); 13} 14ajax(); 15 16function update( way, arrNew ){ 17 18 // 現状のデータ 19 let arr = get(); 20 arr = (arr) ? arr : []; 21 console.log('update() - data : ', arr ); 22 23 // 追加 24 if( way=='unshift' ){ 25 arr.concat( arr.unshift(arrNew) ); 26 console.log('update() - unshift - data : ', arr ); 27 } 28 29 // 削除 30 else if( way=='shift' ){ 31 arr.concat( arr.shift(arrNew) ); 32 console.log('update() - shift - data : ', arr ); 33 } 34 35 // 上に追加 36 else if( way=='merge' ){ 37 console.log('update() - merge - data : ', $.merge( arrNew, arr ) ); 38 } 39 40} 41
試したこと
update()
をコメントアウトすれば[3]
が取得されます。
補足情報(FW/ツールのバージョンなど)
各ブラウザで同じ問題が生じます。
回答1件
あなたの回答
tips
プレビュー