Я пытаюсь перебрать элементы внутри объекта и удалить элементы со значением delete, значение которого истинно, чтобы затем отправить этот объект в качестве данных.Удаление элементов из массива javascript приводит к ошибке
Когда я использую сплайсинг для удаления элемента, я получаю Uncaught TypeError: Не могу прочитать свойство «удалить» неопределенной ошибки. Почему это?
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);
[Связанный, возможно, обман?] (Http://stackoverflow.com/questions/500606/javascript-array-delete-elements) Обратите внимание, что вы пытаетесь удалить элементы в массиве, а не удалять свойства объекта , –
'delete()' делает это для массивов, делающих их разреженными и трудными для решения. Я считаю, что причина, по которой нам нужен такой тип поведения, - это частичные данные, и вам нужно заполнить пустые области таблицы. Используйте 'pop' или' shift'https: //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete#Deleting_array_elements – zer00ne
Когда вы используете ключевое слово delete для удаления элемента из массива, он фактически заменяется нулевым значением. Это то, что происходит в вашей ситуации. См. [Этот ответ] (http://stackoverflow.com/a/12469043/5423708) для лучшего объяснения. Он предлагает решение, но обязательно просмотрите комментарии и для большего контекста. –