У меня есть объект javascript (на самом деле я получаю данные через запрос ajax):
var data = {};
Я добавил в него кое-что:
data[0] = { "ID": "1"; "Status": "Valid" }
data[1] = { "ID": "2"; "Status": "Invalid" }
Теперь я хочу удалить все объекты с недопустимым статусом (но сохранить порядок в том же порядке):
var tempData = {};
for ( var index in data ) {
if ( data[index].Status == "Valid" ) {
tempData.push( data );
}
}
data = tempData;
На мой взгляд, все это должно работать, но я получаю сообщение об ошибке, tempData.push
которое не является функцией. Я понимаю, почему это не то же самое, что массив, но что я мог сделать иначе?
javascript
json
Эндрю Джекман
источник
источник
Ответы:
push()
предназначен для массивов , а не для объектов , поэтому используйте правильную структуру данных.источник
for...in
петлю.Объекты не поддерживают свойство push, но вы также можете сохранить его, используя индекс в качестве ключа,
Я думаю, что это проще, если удалить объект, если его статус недействителен, выполнив.
И, наконец, вам не нужно создавать var temp -
источник
Вы должны сделать
var tempData = new Array();
Push - это функция массива.
источник
new Array()
и нет[]
?[]
- это основной способ создания массивов, другой - альтернативный, и его можно даже перезаписать.new Array()
злоЯзык программирования Javascript поддерживает парадигму функционального программирования, поэтому вы можете легко работать с этими кодами.
источник
Я предполагаю, что ДЕЙСТВИТЕЛЬНО вы получаете объект с сервера и хотите получить объект на выходе
Показать фрагмент кода
источник
Я согласен с правильным ответом выше, но .... вы все еще не указываете значение индекса для данных, которые вы хотите добавить в tempData. Без значения [index] будет добавлен весь массив.
источник
Делать :
источник
new Array()
и нет[]
?