我有一个函数,可以将所有键值与来自 json 字符串的
|
连接起来,但是当我连接所有内容时,它会从头到尾连接itemsObj
。
{
"100_npc": {
"uniqueId": 9000234,
"username": "[NPC]Pelican",
"bitmask": 1,
"itemsObj": {
"colour_id": 0,
"head": 0,
"face": 0,
"neck": 0,
"body": 0,
"hand": 0,
"feet": 0,
"flag_id": 0,
"photo_id": 0,
"x_corr": 100,
"y_corr": 100,
"frame": 0,
"is_member": 1,
"total_membership_days": 0
},
"isEnabled": true
}
}
function onloadCompleteNPC(event) {
var _loc4 = event.target.data;
for (var key in _loc4) {
if (_loc4.hasOwnProperty(key)) {
var item = _loc4[key];
var roomId = key.split('_')[0];
if(roomId === "130") {
var joinArr = [item.uniqueId, item.username];
for (var objKey in item.itemsObj) {
joinArr.push(item.itemsObj[objKey]);
}
var npcStr = joinArr.join('|');
Test(npcStr, roomId);
}
}
}
}
function Test(str, roomId) {
trace("NPC String: " + str + " Room ID: " + roomId);
}
结果
9000251|[NPC]Pelican|0|1|0|100|100|0|0|0|0|0|0|0|0|0
预期结果应如下所示,但并非如此。
9000251|[NPC]Pelican|0|0|0|0|0|0|0|0|0|100|100|0|1|0
代码似乎可以在 Javascript 中运行,但在 actionscript 中却行不通。我试过用
reverse()
反转字符串,但这不起作用。
这对你有用吗?
const obj = {
"100_npc": {
"uniqueId": 9000234,
"username": "[NPC]Pelican",
"bitmask": 1,
"itemsObj": {
"colour_id": 0,
"head": 0,
"face": 0,
"neck": 0,
"body": 0,
"hand": 0,
"feet": 0,
"flag_id": 0,
"photo_id": 0,
"x_corr": 100,
"y_corr": 100,
"frame": 0,
"is_member": 1,
"total_membership_days": 0
},
"isEnabled": true
}
}
function flatten(a,o) {
if (typeof o !== 'object') {
a.push(o);
} else {
const v = Object.values(o);
for (const vv of v) {
flatten(a,vv);
}
}
}
const a = [];
flatten(a,obj['100_npc']);
const valueString = a.join('|');
console.log(valueString);