Javascript 将数组对象值映射到新数组

Javascript 将数组对象值映射到新数组,javascript,arrays,json,object,ecmascript-6,Javascript,Arrays,Json,Object,Ecmascript 6,我有一个对象数组,其中包含一个名为rates的属性,在每个对象中rates数组是id(除其他属性外,为简单起见,此处未显示)。如何将这些id映射到一个新数组,以便记录所有对象中返回的所有id const sampleResponse = [ { id: '123', rates: [{ id: '123' }, { id: '456' }] }, { id: '456', rates: [{ id: '789' }, { id: 'AB

我有一个对象数组,其中包含一个名为rates的属性,在每个对象中rates数组是id(除其他属性外,为简单起见,此处未显示)。如何将这些id映射到一个新数组,以便记录所有对象中返回的所有id

 const sampleResponse = [
   {
     id: '123',
     rates: [{ id: '123' }, { id: '456' }]
   },
   {
     id: '456',
     rates: [{ id: '789' }, { id: 'ABC' }]
   },
   {
     id: '789',
     rates: [{ id: 'DEF' }, { id: 'GHI' }]
   }
 ]
预期结果

const result = ['123', '456', '789', 'ABC', 'DEF', 'GHI']
你可以用它

const sampleObject=[
{
id:'123',
费率:[{id:'123'},{id:'456'}],
},
{
id:'456',
费率:[{id:'789'},{id:'ABC'}],
},
{
id:'789',
费率:[{id:'DEF'},{id:'GHI'}],
},
];
const ret=sampleObject.flatMap((x)=>x.rates.map((y)=>y.id));
控制台日志(ret)可以与一起使用

const sampleObject=[
{
id:'123',
费率:[{id:'123'},{id:'456'}],
},
{
id:'456',
费率:[{id:'789'},{id:'ABC'}],
},
{
id:'789',
费率:[{id:'DEF'},{id:'GHI'}],
},
];
const ret=sampleObject.flatMap((x)=>x.rates.map((y)=>y.id));
控制台日志(ret)
您可以使用
.concat()
.map()
组合来实现它

const sampleObject=[
{
id:'123',
费率:[{id:'123'},{id:'456'}]
},
{
id:'456',
费率:[{id:'789'},{id:'ABC'}]
},
{
id:'789',
费率:[{id:'DEF'},{id:'GHI'}]
}];
让结果=[];
对于(让sampleObject的项){
result=result.concat(item.rates.map(r=>r.id));
} 
控制台日志(结果)
您可以使用
.concat()
.map()
组合来实现它

const sampleObject=[
{
id:'123',
费率:[{id:'123'},{id:'456'}]
},
{
id:'456',
费率:[{id:'789'},{id:'ABC'}]
},
{
id:'789',
费率:[{id:'DEF'},{id:'GHI'}]
}];
让结果=[];
对于(让sampleObject的项){
result=result.concat(item.rates.map(r=>r.id));
} 

控制台日志(结果)使用
forEach
解构

const rateIds=(arr,output=[])=>{
arr.forEach(({rates})=>rates.forEach(({id})=>output.push(id));
返回输出;
};
常量采样器响应=[
{
身份证号码:“123”,
费率:[{id:“123”},{id:“456”}],
},
{
身份证号码:“456”,
费率:[{id:“789”},{id:“ABC”}],
},
{
身份证号码:“789”,
费率:[{id:“DEF”},{id:“GHI”}],
},
];

日志(rateIds(sampleResponse))使用
forEach
解构

const rateIds=(arr,output=[])=>{
arr.forEach(({rates})=>rates.forEach(({id})=>output.push(id));
返回输出;
};
常量采样器响应=[
{
身份证号码:“123”,
费率:[{id:“123”},{id:“456”}],
},
{
身份证号码:“456”,
费率:[{id:“789”},{id:“ABC”}],
},
{
身份证号码:“789”,
费率:[{id:“DEF”},{id:“GHI”}],
},
];

日志(rateIds(sampleResponse))感谢您的快速响应!平面图在IE中似乎不受支持:/我希望它在所有应用程序上都能工作browsers@Michael你用
ecmascript-6
标记了这个问题,啊,你说得对!我错了,这会有用的。非常感谢。另外,感谢您的快速响应!平面图在IE中似乎不受支持:/我希望它在所有应用程序上都能工作browsers@Michael你用
ecmascript-6
标记了这个问题,啊,你说得对!我错了,这会有用的。非常感谢。可供替代的