2013-08-02 6 views
1

я получил следующие JSON:Обновить JSON после удаления

"memberValidations": 
     [ 
      { 
       "field": "PRIMARY_EMAIL", 
       "errorCode": "com.endeavour.data.validation.PRIMARY_EMAIL", 
       "createdDateTime": null 
      }, 
      { 
       "field": "lastName", 
       "errorCode": "com.endeavour.data.validation.lastName", 
       "createdDateTime": null 
      }, 
     ] 

После удаления объекта delete memberValidations[0];

Я ожидаю ЬавЬЫат от memberValidations[0]; но получать неопределенный вместо этого? Любая идея, как это исправить?

+0

Ваш фрагмент JSON недействителен, у вас отсутствует ведущий/конечный '{}'. Кажется, вы считаете, что 'memberValidations' является переменной, из которой я могу сказать, это не так. – Halcyon

+0

Это не полный JSON, только для справки. – RuntimeException

ответ

6

Используя delete, вы удалите элемент из массива, но он не будет изменять его размер так эффективно, что у вас все еще есть элемент по индексу 0, но он больше не назначен (undefined). От docs

При удалении элемента массива длина массива не изменяется. Это выполняется, даже если вы удалите последний элемент массива.

Чтобы полностью удалить объект, необходимо также изменить размер массива, например.

memberValidations.splice(0, 1) 
+0

Правильно, вы обычно используете 'delete' для удаления элементов по имени из хэша ключа/значения, например. 'h = {a: 1, b: 2}', а затем 'delete h.a' или' delete h ["a"] 'оставит вас с' h = {b: 2} '. Если вы хотите удалить из массива, сплайсируйте. Если вы не хотите удалять на месте, вы можете клонировать и удалять, или использовать '_.without()' underscore/lodash ' – deitch

+0

Работает отлично, как ожидалось, спасибо Джеймсу! – RuntimeException

Смежные вопросы