如何检索除一个属性/级别(Javascript)之外的对象嵌套数组的版本
我想检索一个不包含详细信息的对象版本。或者换句话说,我想检索嵌套对象数组中除Trades元素之外的所有元素 最好的方法是什么?每个级别上的属性列表实际上比这个级别长得多。是否有一种方法可以在某个级别上复制除一个属性之外的所有属性?或除一个级别外的所有级别:离开交易但删除其交易节点) 我找到了这样一种方法:如何检索除一个属性/级别(Javascript)之外的对象嵌套数组的版本,javascript,arrays,json,Javascript,Arrays,Json,我想检索一个不包含详细信息的对象版本。或者换句话说,我想检索嵌套对象数组中除Trades元素之外的所有元素 最好的方法是什么?每个级别上的属性列表实际上比这个级别长得多。是否有一种方法可以在某个级别上复制除一个属性之外的所有属性?或除一个级别外的所有级别:离开交易但删除其交易节点) 我找到了这样一种方法: const pfSummary = JSON.parse(JSON.stringify(portfolios)); var key; pfSummary.forEach(function (p
const pfSummary = JSON.parse(JSON.stringify(portfolios));
var key;
pfSummary.forEach(function (pf) {
for (x in pf) {
key = x;
break;
}
pf[key].Orders.forEach(function (or) {
for (x in or) {
key = x;
break;
}
delete or[key].Trades;
});
});
这很有效。我相信有更好的方法可以做到这一点,例如,如何正确检索对象的密钥
更好的解决方案
阿卡宾改进的解决方案:
pfSummary.forEach(pf => {
let pfKey = Object.keys(pf);
pf[pfKey].Orders.forEach(or => {
let orKey = Object.keys(or);
delete or[orKey].Trades;
});
});
这样的办法应该行得通
let pfSummary = [{
"SP": {
"countOrders": 47,
"count": 0,
"Orders": [{
"81803965": {
"symbol": "RFX",
"description": "REDFLOW LTD",
"Trades": {
"Trade": [{
"conId": "81803965",
"tradeId": "17891517",
"transactionId": "51996490",
}]
}
}
}]
}
}]
pfSummary.forEach(el =>{
let name = Object.keys(el);
for (const key of Object.entries(el[name].Orders[0])) {
delete key[1].Trades['Trade'];
}
})
console.log('pfSummary', pfSummary)
我会调查的,谢谢。然而,SP不是一个键名,而是一个命名键,就像Orders对象中的键一样。只是将其更新为包含一种绕过随机键名的方法。这只会从第一个订单中删除交易。但是你找回钥匙的方法帮了我。为问题添加了修改后的解决方案。很高兴我至少能帮助您做到这一点。您希望生成的数据是什么样的?
let pfSummary = [{
"SP": {
"countOrders": 47,
"count": 0,
"Orders": [{
"81803965": {
"symbol": "RFX",
"description": "REDFLOW LTD",
"Trades": {
"Trade": [{
"conId": "81803965",
"tradeId": "17891517",
"transactionId": "51996490",
}]
}
}
}]
}
}]
pfSummary.forEach(el =>{
let name = Object.keys(el);
for (const key of Object.entries(el[name].Orders[0])) {
delete key[1].Trades['Trade'];
}
})
console.log('pfSummary', pfSummary)