我有一个javascript对象,其中包含:
var object =[{"knowledgeTime":"20180101T235959","validTime":"20180101T235959","portfolioId":"Control","type":"EQUITY_OPEN_LONG","assetId":"A","strategyId":0,"quantity":1000,"cost":100000,"contractualSettleDate":"SPECIAL","commission":2.06,"fee":1.03,"managerId":0},{"knowledgeTime":"20180101T235959","validTime":"20180101T235959","portfolioId":"Control","type":"EQUITY_OPEN_LONG","assetId":"A","strategyId":0,"quantity":1000,"cost":100000,"contractualSettleDate":"SPECIAL","commission":2.06,"fee":1.03,"managerId":0}const keyname = ['eventHeader'];
const result = keyname.reduce((acc, date, i) => {
acc.push([keyname, data]);
return acc;
}, []);
var json_object = JSON.stringify(result);
document.getElementById("Object").innerHTML = json_object;
$('.result').append('<div id ="alert" class="alert-success"><ul class="list-group" min-width:500px><li class="list-group-item active">Result Json</li><textarea class="form-control" cols="100" rows="10">{"records:"['+json_object+'</textarea></li></div>');
})
};
reader.onerror = function(event) {
console.error("File could not be read! Code " + event.target.error.code);
};
reader.readAsBinaryString(selectedFile);
});
});所需的输出为:
{
"records": [
{
"common": {
"validTime": "20180101T121222",
"knowledgeTime": "20180101T121222"
},
"eventHeader": {
"portfolioId": "Collect Acquisition Disposition Transactions",
"type": "EQUITY_OPEN_LONG"
},
"details": {
"assetId": 12,
"custodianAccountId": 0,
"strategyId": 0,
"quantity": 150,
"cost": 5001.23,
"contractualSettleDate": "SPECIAL",
"commission": 2.05,
"fee": 1.03,
"managerId": 0,
"basketId": 0
}
}但是我得到的结果一点也不接近,因为我不知道如何将所需的3个数组键拼接到对象中的适当位置。
有没有人能帮上忙?我在ablo中得到的最接近的结果就是将一个eventHeader键放入对象中--但是不知道如何将portfolioId键值对连接到对象中。抱歉,如果这太新手了--但我真的很难理解这门语言。我有另一个版本,我尝试在stringify中使用regex替换,但也不起作用,我假设我需要拉入每个对象行-拼接在键中,然后是键值对-但无法弄清楚拼接。
发布于 2020-01-05 07:05:50
解决方案是:
var object =[{"knowledgeTime":"20180101T235959","validTime":"20180101T235959","portfolioId":"Control","type":"EQUITY_OPEN_LONG","assetId":"A","strategyId":0,"quantity":1000,"cost":100000,"contractualSettleDate":"SPECIAL","commission":2.06,"fee":1.03,"managerId":0},{"knowledgeTime":"20180101T235959","validTime":"20180101T235959","portfolioId":"Control","type":"EQUITY_OPEN_LONG","assetId":"A","strategyId":0,"quantity":1000,"cost":100000,"contractualSettleDate":"SPECIAL","commission":2.06,"fee":1.03,"managerId":0}];
const getObject = (array) => {
const newArray = array.map(obj => {
const { validTime, knowledgeTime, portfolioId, type, assetId, custodianAccountId, strategyId, quantity, cost, contractualSettleDate, commission, fee, managerId, basketId } = obj;
const newObject = {
common: {
validTime,
knowledgeTime
},
eventHeader: {
portfolioId,
type
},
details: {
assetId,
custodianAccountId,
strategyId,
quantity,
cost,
contractualSettleDate,
commission,
fee,
managerId,
basketId
}
};
return newObject;
})
return { records: newArray };
}
const requeiredOutput = getObject(object);
console.log(requeiredOutput);发布于 2020-01-05 07:06:25
我不是百分之百确定你想要做什么,但如果它是我认为的,那么这是一个解决方案:
const sourceArray = [
{
knowledgeTime: '20180101T235959',
validTime: '20180101T235959',
portfolioId: 'Control',
type: 'EQUITY_OPEN_LONG',
assetId: 'A',
strategyId: 0,
quantity: 1000,
cost: 100000,
contractualSettleDate: 'SPECIAL',
commission: 2.06,
fee: 1.03,
managerId: 0,
},
{
knowledgeTime: '20180101T235959',
validTime: '20180101T235959',
portfolioId: 'Control',
type: 'EQUITY_OPEN_LONG',
assetId: 'A',
strategyId: 0,
quantity: 1000,
cost: 100000,
contractualSettleDate: 'SPECIAL',
commission: 2.06,
fee: 1.03,
managerId: 0,
},
];
const commonKeys = ['validTime', 'knowledgeTime'];
const eventHeaderKeys = ['portfolioId', 'type'];
function createNestedObj(obj) {
const nestedObj = {common: {}, eventHeader: {}, details: {}};
for (const [key, val] of Object.entries(obj)) {
if (commonKeys.includes(key)) {
nestedObj.common[key] = val;
} else if (eventHeaderKeys.includes(key)) {
nestedObj.eventHeader[key] = val;
} else {
nestedObj.details[key] = val;
}
}
return nestedObj;
}
const output = {records: []};
for (const item of sourceArray) {
const nestedObj = createNestedObj(item);
output.records.push(nestedObj);
}
console.log(output);https://stackoverflow.com/questions/59595414
复制相似问题