-1
オブジェクト内のアイテムをループし、値がtrueのdeleteプロパティでアイテムを削除しようとして、そのオブジェクトをデータとして投稿しようとしています。javascript配列からアイテムを削除するとエラーが発生する
スプライスを使用してアイテムを削除すると、Uncaught TypeErrorが発生します。未定義のエラーの 'delete'プロパティを読み取れません。何故ですか?
https://jsfiddle.net/ah9td94q/3/
var data = {
"stuff":[
{"x":0},
{"y":1, "delete": true},
{"z":2, "delete": true}
]
}
Object.keys(data.stuff).forEach(function (key) {
if (data.stuff[key].delete == true) {
data.stuff.splice(key, 1);
}
});
var postData = JSON.stringify({something:'something', data: data});
console.log(postData);
[関連する、おそらくdupe?](http://stackoverflow.com/questions/500606/javascript-array-delete-elements)配列内の項目を削除しようとしているが、オブジェクトからプロパティを削除しない。 –
'delete()'はそれを配列に渡して、それを扱いにくく、難しくします。このタイプの行動が必要な理由は、部分的なデータがあり、テーブルの空き領域を埋める必要がある場合です。 'pop'または' shift'を使用してください://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete#Deleting_array_elements – zer00ne
deleteキーワードを使用して配列から要素を削除すると、実際にはヌル値に置き換えられます。これはあなたの状況で起こっていることです。より良い説明については、[この回答](http://stackoverflow.com/a/12469043/5423708)を参照してください。それは解決策を提供しますが、より多くの文脈でコメントを見てください。 –