Javascript 映射对象属性并转换为字符串
我收集了以下数据:Javascript 映射对象属性并转换为字符串,javascript,angular,typescript,ecmascript-6,Javascript,Angular,Typescript,Ecmascript 6,我收集了以下数据: let myInputArray = [ { "id": 1, "commercialRanges": [ { "rangeId": "305", "rangeName": "FIXE" }, { "rangeId": "306", "rangeName": "POSTPAID"
let myInputArray = [
{
"id": 1,
"commercialRanges": [
{
"rangeId": "305",
"rangeName": "FIXE"
},
{
"rangeId": "306",
"rangeName": "POSTPAID"
},
],
"active": true,
"pefName": "Alertes",
"roles": "ADVISOR",
"equipmentTypes": "PC",
},
...
{
"id": 1523,
"commercialRanges": [
{
"rangeId": "700",
"rangeName": "POSTPAID"
},
{
"rangeId": "500",
"rangeName": "PREPAID"
},
]
,
"active": true,
"pefName": "Alertes",
"roles": "ADVISOR",
"equipmentTypes": "PC",
},
]
我想更新我的数据:
转换属性commercialRanges的对象格式数组
->到一个简单字符串:它连接不同的rangeName值
我得到的数组如下所示:
因此,我应该转换嵌入的对象commercialRanges
致:
您可以尝试使用,和 让myInputArray=[{id:1,commercialRanges:[{rangeId:305,rangeName:FIXE},{rangeId:306,rangeName:PostPad}],active:true,pefName:Alertes,roles:ADVISOR,equipmentTypes:PC}]; myInputArray.forEacho=>o.commercialRanges=o.commercialRanges.mapr=>r.rangeName.join',';
console.logmyInputArray 其基本思想是循环使用myInputArray数组,并将commercialRanges减少为字符串;为此,您还需要使用循环 我建议在myInputArray上使用Array.prototype.reduce方法,然后在commercialRanges数组上使用Array.prototype.map,因为这是实现这一点最简单/最优雅的方法。您还可以对这两个循环使用map,以及reduce。真的由你决定。我的票到了
let myInputArray = [
{
"id": 1,
"commercialRanges": [
{
"rangeId": "305",
"rangeName": "FIXE"
},
{
"rangeId": "306",
"rangeName": "POSTPAID"
},
],
"active": true,
"pefName": "Alertes",
"roles": "ADVISOR",
"equipmentTypes": "PC",
},
...
{
"id": 1523,
"commercialRanges": [
{
"rangeId": "700",
"rangeName": "POSTPAID"
},
{
"rangeId": "500",
"rangeName": "PREPAID"
},
]
,
"active": true,
"pefName": "Alertes",
"roles": "ADVISOR",
"equipmentTypes": "PC",
},
]
const myInputString = myInputArray.reduce((arr, obj) => [
...arr,
{
...obj,
commercialRanges: obj.commercialRanges.map(rObj => rObj.rangeName).join(',')
}
], [])
备选案文2:
使用Array.prototype.map循环两个数组
到目前为止,您尝试了什么?@firasKoubaa请记住,这种方法会变异myInputArray。
"commercialRanges": [
{
"rangeId": "305",
"rangeName": "FIXE"
},
{
"rangeId": "306",
"rangeName": "POSTPAID"
},
]
"commercialRanges": "FIXE,POSTPAID"
let myInputArray = [
{
"id": 1,
"commercialRanges": [
{
"rangeId": "305",
"rangeName": "FIXE"
},
{
"rangeId": "306",
"rangeName": "POSTPAID"
},
],
"active": true,
"pefName": "Alertes",
"roles": "ADVISOR",
"equipmentTypes": "PC",
},
...
{
"id": 1523,
"commercialRanges": [
{
"rangeId": "700",
"rangeName": "POSTPAID"
},
{
"rangeId": "500",
"rangeName": "PREPAID"
},
]
,
"active": true,
"pefName": "Alertes",
"roles": "ADVISOR",
"equipmentTypes": "PC",
},
]
const myInputString = myInputArray.reduce((arr, obj) => [
...arr,
{
...obj,
commercialRanges: obj.commercialRanges.map(rObj => rObj.rangeName).join(',')
}
], [])
const myInputString = myInputArray.map(obj => ({
...obj,
commercialRanges: obj.commercialRanges.map(rObj => rObj.rangeName).join(',')
})
)