Есть ли особый способ соединить каждый отдельный блок строки с | так, как это
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
}
}
Вам нужно будет определить порядок этих столбцов.
Вывод в виде массива или файла, разделенного новой строкой?
Я попытался вытолкнуть его как массив, но он полностью слился, а это не то, что я хотел.
Так что же ты хотел? Желаемый результат все еще неясен. Как узнать, что блок связан с 100_npc, 101_npc или любым другим?
Я хочу, чтобы он выводил 9000234|Test NPC|0|0|0|0|0|0|0|0|, разделяя значения на |, и так же для 2-го блока.
@Zesty Что-то вроде этого? jsfiddle.net/sfmtrjhd
Вы предоставили два объекта. Я до сих пор не понимаю ... Я предполагаю, что ваш ввод: "100_npc" и в качестве ответа вы хотите .... pipe | отдельная строка, верно?
С какой стати вы хотите сделать такую вещь? У вас уже есть отличный JSON, формат, который гораздо проще анализировать и впоследствии работать с ним.
Пойнти имеет хороший смысл
Я знаю, что это плохая практика, но протокол Клуба пингвинов создает такие строки игроков, разделяя их с помощью |



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Кажется, это выводит то, что вы просите: (детская площадка)
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'));Да именно так, как я хочу
Еще раз спасибо! Я смог переписать это на ActionScript, и оно работает именно так, как должно.
Если вы хотите искать только определенное имя свойства, например «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)
Сколько слоев вложенности вам приходится обрабатывать?