Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
1 / 1 / 0
Регистрация: 07.07.2019
Сообщений: 29

JSON.stringify и return

05.09.2022, 20:47. Показов 2156. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
  let users = {
        id: 1,
        login: 'harry',
        password: 'qwerty',
        status: 'admin',
        access: true
    }
   
const result = JSON.stringify(users, (key, value) => {
    if (key === 'id') return undefined;
   return value
})
console.log(result)
Не понятно почему return value работает (в т.ч. и для key), а return key нет ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.09.2022, 20:47
Ответы с готовыми решениями:

Условие для выбора объекта в body:JSON.stringify()
Доброго времени суток. Необходимо написать условие для выбора объекта в JSON.stringify() . Как это можно сделать? ...

JSON decode и имя return
Как разложить подобный объект на части? { "return": { "success": "true", "number": 92.89, "event":...

Ajax controller return json
<script> $(document).ready(function () { $("#get").click(function () { var formdata = new...

18
 Аватар для NTHing
1818 / 962 / 388
Регистрация: 26.11.2014
Сообщений: 1,962
Записей в блоге: 1
05.09.2022, 22:52
Ещё раз, пожалуйста, в чём суть вопроса? Другими словами, пожалуйста...
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3823 / 1661 / 428
Регистрация: 14.03.2022
Сообщений: 4,170
05.09.2022, 23:06
Цитата Сообщение от makle21 Посмотреть сообщение
Не понятно почему return value работает (в т.ч. и для key), а return key нет ?
Для более сложных ситуаций вторым параметром можно передать функцию function(key, value), которая возвращает сериализованное value либо undefined, если его не нужно включать в результат:
https://github.com/iliakan/jav... article.md

Т.е. там с выбором не особо...
1
 Аватар для klyapa
3503 / 1267 / 429
Регистрация: 24.07.2016
Сообщений: 1,890
05.09.2022, 23:42
Цитата Сообщение от NTHing Посмотреть сообщение
в чём суть вопроса? Другими словами, пожалуйста...
ТС невнимательно прочёл эту тему и не до конца понимает, как работает replacer. Хочет, чтобы ему объяснили на других двух пальцах.
1
1 / 1 / 0
Регистрация: 07.07.2019
Сообщений: 29
06.09.2022, 12:26  [ТС]
Ну хорошо. Попробую объяснить свой вопрос. Хотя он вроде простой. В объекты вводятся свойства из двух составляющих: ключ и значение. Значение свойства вынимаются с помощью ключа : alert(user.name). Есть, конечно и конкретные методы типа Object.values(obj) и т.п. Но это на мой взгляд более специализированные (узкие) методы. В моем примере,конечно, преобразование объекта происходит через функцию. Но и тут для преобразования тоже вводятся две части свойства: ключ и значение. Логично было бы получить преобразованное значение value также через ключ. Но такая попытка здесь выдает ошибку. Речь ведь не идет о том, что преобразуется. А о том, почему вывод через ключ невозможен.
0
126 / 94 / 34
Регистрация: 24.06.2022
Сообщений: 253
06.09.2022, 12:34
makle21, вы смотрели примеры по предложенным выше ссылкам ? там же всё объясняется
0
1 / 1 / 0
Регистрация: 07.07.2019
Сообщений: 29
06.09.2022, 12:37  [ТС]
[ И да, klyapa, ХРЕНЬ это круто. ]
0
126 / 94 / 34
Регистрация: 24.06.2022
Сообщений: 253
06.09.2022, 12:46
makle21,на ваш вопрос уже ответили.

Цитата Сообщение от makle21 Посмотреть сообщение
В моем примере,конечно, преобразование объекта происходит через функцию.
да нет же.
Цитата Сообщение от klyapa Посмотреть сообщение
ТС невнимательно прочёл эту тему и не до конца понимает, как работает replacer.
Посмотрите что такое replacer
в качестве replacer мы можем использовать функцию
0
1 / 1 / 0
Регистрация: 07.07.2019
Сообщений: 29
06.09.2022, 12:54  [ТС]
Цитата Сообщение от js_advent
makle21, вы смотрели примеры по предложенным выше ссылкам ? там же всё объясняется
Если Вы о фразе "Для более сложных ситуаций вторым параметром можно передать функцию function(key, value), которая возвращает сериализованное value либо undefined, если его не нужно включать в результат" ? То, да, я читал. Вы сами мое объяснение читали?
0
Эксперт JS
 Аватар для DrType
6553 / 3624 / 1075
Регистрация: 07.09.2019
Сообщений: 5,877
Записей в блоге: 1
06.09.2022, 12:57
makle21, я пока не понял, какой именно вариант не работает, и как он должен был бы работать?
0
126 / 94 / 34
Регистрация: 24.06.2022
Сообщений: 253
06.09.2022, 12:58
Цитата Сообщение от makle21 Посмотреть сообщение
Вы сами мое объяснение читали?
да читал, к сожалению , и вижу что вам пока не дошло. не все сразу, ничего страшного.
0
 Аватар для NTHing
1818 / 962 / 388
Регистрация: 26.11.2014
Сообщений: 1,962
Записей в блоге: 1
06.09.2022, 13:03
Вот это для начала поясните, пожалуйста, без абстракций, только суть.
Но такая попытка здесь выдает ошибку
0
1 / 1 / 0
Регистрация: 07.07.2019
Сообщений: 29
06.09.2022, 13:42  [ТС]
Цитата Сообщение от DrType Посмотреть сообщение
makle21, я пока не понял, какой именно вариант не работает, и как он должен был бы работать?
Уф! Ну хорошо. Попробую зайти с другой стороны. В функцию от replacer введены два значения: key и value. Если бы было введено одно значение - value, функция бы не сработала. Так? Значит ключ Key тут активный. В процессе участвует. Дальше. Строчка " if (key === 'id') return undefined;" тоже показывает, что Key активный и участвует в выводе (невыводе) значения. И при попытке вывода окончательного ответа через тот же Key " return key " логично было бы ожидать в сериализованном объекте вывод "ключ: значение". Но вместо этого ошибка. Key становится неактивным. Для меня это непонятно.
0
 Аватар для NTHing
1818 / 962 / 388
Регистрация: 26.11.2014
Сообщений: 1,962
Записей в блоге: 1
06.09.2022, 14:12
Replacer также сериализуется, как и остальные поля в объекте. При этом на выходе key это пустая строка, а value это сам объект. Поэтому если return key, то итерация останавливается и возвращается пустая строка. Правильно я вас понимаю?
1
1 / 1 / 0
Регистрация: 07.07.2019
Сообщений: 29
06.09.2022, 14:37  [ТС]
Цитата Сообщение от NTHing Посмотреть сообщение
При этом на выходе key это пустая строка, а value это сам объект. Поэтому если return key, то итерация останавливается и возвращается пустая строка.
value превращается в объект. Делится на две составные: ключ, значение. Значение ключа забирает у Key, оставляя его как переменную, но очищая. И в процессе он больше не участвует. Все так? Какая-то сложная перетурбация. Милое дело было бы, как во всех обычных объектах выводить значение по ключу. Спасибо за помощь.
0
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
06.09.2022, 14:44
Цитата Сообщение от makle21 Посмотреть сообщение
Не понятно почему return value работает (в т.ч. и для key), а return key нет ?
Вы имеете в виду, почему код ниже возвращает пустую строку?
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
let users = {
        id: 1,
        login: 'harry',
        password: 'qwerty',
        status: 'admin',
        access: true
    }
   
const result = JSON.stringify(users, (key, value) => {
    if (key === 'id') return undefined;
   return key;
})
console.log(result) // ""
Если да, то как сказано в уроке по ссылке выше:
Первый вызов – особенный. Ему передаётся специальный «объект-обёртка»: {"": meetup}. Другими словами, первая (key, value) пара имеет пустой ключ, а значением является целевой объект в общем. Вот почему первая строка из примера выше будет ":[object Object]".
Соответственно на первой итерации в value будет весь объект целиком. Поскольку вы делаете return key, в а key, как мы уже поняли, пустая строка, то весь объект вы превращаете в эту самую пустую строку.
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3823 / 1661 / 428
Регистрация: 14.03.2022
Сообщений: 4,170
06.09.2022, 14:55
makle21, вот так сработает
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
let users = {
        id: 1,
        login: 'harry',
        password: 'qwerty',
        status: 'admin',
        access: true
    }
   
const result = JSON.stringify(users, (key, value) => {
    if (key === 'id') return undefined;
    if (key !== '') return key;
    return value;
})
console.log(result)
2
1 / 1 / 0
Регистрация: 07.07.2019
Сообщений: 29
06.09.2022, 16:31  [ТС]
Цитата Сообщение от krvsa Посмотреть сообщение
makle21, вот так сработает
{"login":"login","password":"password"," status":"status","access":"access"}

Творческий подход. Засчитано!

Добавлено через 24 минуты
Цитата Сообщение от Balanaar Посмотреть сообщение
Поскольку вы делаете return key, в а key, как мы уже поняли, пустая строка, то весь объект вы превращаете в эту самую пустую строку.
Но это же касается только первого вызова. По объекту в целом. А дальнейшие вызовы уже по содержанию показывают, что значения ключей сохранены. Да и по тому уроку видно, что даже при пустом ключе значение [objectObject] остается.
0
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
06.09.2022, 17:43
Цитата Сообщение от makle21 Посмотреть сообщение
Но это же касается только первого вызова
Ну так вы на первом вызове взяли и затёрли объект целиком. Дальнейших вызовов просто не будет.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.09.2022, 17:43
Помогаю со студенческими работами здесь

Что это isOk(int s),setAge(int g){if(isOk(g){age=g;return true;}else{.;return false;}}.getName(){return name;}?
package com.company; import java.io.Serializable; public class person implements Serializable { protected String name; ...

Что такое в jquery и java return false и return true
Если я правильно понимаю, то return false отменяет действие по умолчанию, например клик по ссылке, а return true это наоборот приводит в...

Односвязный список - объясните, как работают return 0 и return 1
проверьте, пжлса, по комментариям правильно ли я поняла принцип работы программы. Объясните, как здесь работают return 0 и return 1. и...

В чем разница между return и return false/true
Привет всем. Вот подскажите плиз) return; return false; return true; расскажите пожалуйста об етих операторах.. чем они...

How can to return value (return value; ) of javascript function to ASP ?
How can to return value (return value; ) of javascript function to ASP ?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru