Присоединиться к строке JSON

Есть ли особый способ соединить каждый отдельный блок строки с | так, как это

9000234|Test NPC|0|0|0|0|0|0|0|0| исключая isEnabled. Я также не хочу, чтобы другие блоки сливались друг с другом. Я не совсем уверен, как бы я это сделал.

    "100_npc": {
        "uniqueId": 9000234,
        "username": "Test NPC",
        "itemsObj": {"colour": 0, "head": 0, "face": 0, "body": 0, "neck": 0, "hand": 0, "feet": 0, "flag": 0, "photo": 0},
        "isEnabled": true
    },
    "101_npc": {
        "uniqueId": 9000251,
        "username": "Pelican",
        "itemsObj": {"colour": 0, "head": 0, "face": 0, "body": 0, "neck": 0, "hand": 0, "feet": 0, "flag": 0, "photo": 0},
        "isEnabled": true
    }
}

Сколько слоев вложенности вам приходится обрабатывать?

Unmitigated 02.05.2023 02:02

Вам нужно будет определить порядок этих столбцов.

tadman 02.05.2023 02:03

Вывод в виде массива или файла, разделенного новой строкой?

Roko C. Buljan 02.05.2023 02:04

Я попытался вытолкнуть его как массив, но он полностью слился, а это не то, что я хотел.

Zesty 02.05.2023 02:05

Так что же ты хотел? Желаемый результат все еще неясен. Как узнать, что блок связан с 100_npc, 101_npc или любым другим?

Roko C. Buljan 02.05.2023 02:06

Я хочу, чтобы он выводил 9000234|Test NPC|0|0|0|0|0|0|0|0|, разделяя значения на |, и так же для 2-го блока.

Zesty 02.05.2023 02:07

@Zesty Что-то вроде этого? jsfiddle.net/sfmtrjhd

Unmitigated 02.05.2023 02:08

Вы предоставили два объекта. Я до сих пор не понимаю ... Я предполагаю, что ваш ввод: "100_npc" и в качестве ответа вы хотите .... pipe | отдельная строка, верно?

Roko C. Buljan 02.05.2023 02:08

С какой стати вы хотите сделать такую ​​вещь? У вас уже есть отличный JSON, формат, который гораздо проще анализировать и впоследствии работать с ним.

Pointy 02.05.2023 02:09

Пойнти имеет хороший смысл

Roko C. Buljan 02.05.2023 02:11

Я знаю, что это плохая практика, но протокол Клуба пингвинов создает такие строки игроков, разделяя их с помощью |

Zesty 02.05.2023 02:11
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
11
60
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Кажется, это выводит то, что вы просите: (детская площадка)

    let data = {
      '100_npc': {
        uniqueId: 9000234,
        username: 'Test NPC',
        itemsObj: {
          colour: 0,
          head: 0,
          face: 0,
          body: 0,
          neck: 0,
          hand: 0,
          feet: 0,
          flag: 0,
          photo: 0,
        },
        isEnabled: true,
      },
      '101_npc': {
        uniqueId: 9000251,
        username: 'Pelican',
        itemsObj: {
          colour: 0,
          head: 0,
          face: 0,
          body: 0,
          neck: 0,
          hand: 0,
          feet: 0,
          flag: 0,
          photo: 0,
        },
        isEnabled: true,
      },
    };
    
    let result = [];
    
    for (let key in data) {
      if (data.hasOwnProperty(key)) {
        let item = data[key];
        let arr = [item.uniqueId, item.username];
        for (let objKey in item.itemsObj) {
          arr.push(item.itemsObj[objKey]);
        }
        result.push(arr.join('|'));
      }
    }
    
    console.info(result.join('\n'));

Да именно так, как я хочу

Zesty 02.05.2023 02:10

Еще раз спасибо! Я смог переписать это на ActionScript, и оно работает именно так, как должно.

Zesty 02.05.2023 02:21

Если вы хотите искать только определенное имя свойства, например «npc_100»,

const data =  {  
  "100_npc": {"uniqueId": 9000234,"username": "Test NPC","itemsObj": {"colour": 0, "head": 0, "face": 0, "body": 0, "neck": 0, "hand": 0, "feet": 0, "flag": 0, "photo": 0},"isEnabled": true},
  "101_npc": {"uniqueId": 9000251,"username": "Pelican","itemsObj": {"colour": 0, "head": 0, "face": 0, "body": 0, "neck": 0, "hand": 0, "feet": 0, "flag": 0, "photo": 0},"isEnabled": true}
};


const prop = "100_npc";

const result = Object.entries(data[prop]).reduce((a, [k, v]) => 
  (k !== "isEnabled" && a.push(k== = "itemsObj" ? Object.values(v) : v), a)
, []).flat().join("|");

console.info(result)

Для вывода файла:

const data =  {  
  "100_npc": {"uniqueId": 9000234,"username": "Test NPC","itemsObj": {"colour": 0, "head": 0, "face": 0, "body": 0, "neck": 0, "hand": 0, "feet": 0, "flag": 0, "photo": 0},"isEnabled": true},
  "101_npc": {"uniqueId": 9000251,"username": "Pelican","itemsObj": {"colour": 0, "head": 0, "face": 0, "body": 0, "neck": 0, "hand": 0, "feet": 0, "flag": 0, "photo": 0},"isEnabled": true}
};

const result = Object.values(data).map(entry => Object.entries(entry).reduce((a, [k, v]) => 
  (k !== "isEnabled" && a.push(k== = "itemsObj" ? Object.values(v) : v), a)
, []).flat().join("|")).join("\n");

console.info(result)

Другие вопросы по теме