получаю json
{noname:
files: {2: "img_209804.webp", 3: "img_248730.jpg", 4: "img_257256.jpg", 5: "img_401780.jpg", 6: "img_475929.webp", 7: "img_744919.webp"}
path: ["/users/500475143/noname/"]}
нужно определить количество записей в files.
пишу
var sizeArray=finish['noname']['files'];
console.log(sizeArray.length);
возвращает undefined?
JavaScript
В чём проблема? не могу длину определить? undefined возвращает
Научись сперва при задании вопроса хотябы правельно сформировать сам массив всё за вас домысливать приходится итак выгледеть он по идеи так
finish={noname:{
files: {2: "img_209804.webp", 3: "img_248730.jpg", 4: "img_257256.jpg", 5: "img_401780.jpg", 6: "img_475929.webp", 7: "img_744919.webp"}},
path: ["/users/500475143/noname/"]};
sizeArray=finish['noname']['files'];
console.warn(Object.keys(sizeArray).length);
Вот так всё работает что не ясно читай первый ответ там всё сказано
⚤
finish={noname:{
files: {2: "img_209804.webp", 3: "img_248730.jpg", 4: "img_257256.jpg", 5: "img_401780.jpg", 6: "img_475929.webp", 7: "img_744919.webp"}},
path: ["/users/500475143/noname/"]};
sizeArray=finish['noname']['files'];
console.warn(Object.keys(sizeArray).length);
Вот так всё работает что не ясно читай первый ответ там всё сказано
⚤
У тебя finish['noname']['files'] - ОБЪЕКТ. У которого НЕТ свойства length. И то, что имена полей - числа, ничего не меняет. Хочешь получить массив - создавай структуру, которая запишется в JSON именно как массив: в квадратных скобках и без указания индексов (индексация идет автоматически от 0 до lenght-1 без пропусков).
У тебя в files отсутствуют индексы 0 и 1. Потому сериализация происходит в объект, а не в массив. А десериализатор видит запись объекта и создаёт объект.
Не проще ли передавать размер непосредственно в JSON?
У тебя в files отсутствуют индексы 0 и 1. Потому сериализация происходит в объект, а не в массив. А десериализатор видит запись объекта и создаёт объект.
Не проще ли передавать размер непосредственно в JSON?
Если не умеешь в JSON из-за того что тупенький, то после парсинга можешь просто создать массив из значений объекта files:
let filesArr = Object.values(finish.noname.files);
console.log(filesArr.length);
let filesArr = Object.values(finish.noname.files);
console.log(filesArr.length);
пишите без ошибок формируйте объекты правильно
var lst = {
noname: /* формируем files */ { files : {
2: "img_209804.webp", 3: "img_248730.jpg", 4: "img_257256.jpg", 5: "img_401780.jpg", 6: "img_475929.webp", 7: "img_744919.webp"}
} , /* запятая */
path: ["/users/500475143/noname/"]
}
// получаем количество
alert( Object.values( lst['noname']['files'] ).length );
var lst = {
noname: /* формируем files */ { files : {
2: "img_209804.webp", 3: "img_248730.jpg", 4: "img_257256.jpg", 5: "img_401780.jpg", 6: "img_475929.webp", 7: "img_744919.webp"}
} , /* запятая */
path: ["/users/500475143/noname/"]
}
// получаем количество
alert( Object.values( lst['noname']['files'] ).length );
Похожие вопросы
- Пожалуйста объясните человеческим языком где и как используется значение undefined и null в JavaScript ?
- Как html-страницу с автозаполнением формы настроить на автоизменение длины каждой строки ввода (input)...?
- Почему функция постоянно возвращает true или false? (но не должна)
- JavaScript. Как проверить, была ли определена переменная?
- Для объекта Date написать функцию isBetween( date1, date2), которая возвращает true
- Массивы с длиной-что это
- Проблема с массивом
- Разрабатываю бота для Discord. Столкнулся с проблемой.
- Проблема с решением задачи (циклы)
- Хочу начать учить язык программирование, но не могу определиться какой. Что вы можете сказать по поводу JavaScript.