我想知道如何使用 map javascript 函数从数组数组中获取值。
我对查询的回应:
[
{
customer_id: '5d0757aa4b6620003335aff2',
cars: [
{
type: 'break', // unique
serial_number: '0000X523654FE'
// ... other data, not useful here
},
{
type: 'sport',
serial_number: '485605FEL45E'
// ...
}
]
}
]
我想获取serial_number
字符串,所以在这里我用地图 javascript 函数做了什么:
const serialNumber = response.items.map(element => {
return element.cars.map(car => {
if (car.type == "sport") {
return car.serial_number;
}
});
});
我得到:
[[ '485605FEL45E' ]
我想得到 :'485605FEL45E'
如何删除双数组? 我只想要价值。
谢谢!
编辑:我没有指定重要的东西,类型是唯一的,我不能为同一个客户买两辆跑车。
你可以改用find
let data = [{
customer_id: '5d0757aa4b6620003335aff2',
cars: [{
type: 'break',
serial_number: '0000X523654FE'
},
{
type: 'sport',
serial_number: '485605FEL45E'
}
]
}]
const serialNumber = data.map(element => {
let found = element.cars.find(car => {
if (car.type == "sport") {
return car.serial_number;
}
});
return (found || {}).serial_number
});
console.log(serialNumber)
如果有多个带有"sport"的条目,您可以使用filter
而不是find
let data = [{
customer_id: '5d0757aa4b6620003335aff2',
cars: [{
type: 'break',
serial_number: '0000X523654FE'
},
{
type: 'sport',
serial_number: '485605FEL45E'
},
{
type: 'sport',
serial_number: '657445FEL45E'
}
]
}]
const serialNumber = data.map(element => {
let found = element.cars.reduce((op, car) => {
if (car.type == "sport") {
op.push(car.serial_number)
}
return op
}, []);
return found.length && found
});
console.log(serialNumber.flat())
你可以只使用 Array.join("(。
let items = [{
customer_id: '5d0757aa4b6620003335aff2',
cars: [{
type: 'break',
serial_number: '0000X523654FE'
},
{
type: 'sport',
serial_number: '485605FEL45E'
}
]
}]
const serialNumber = items.map(element => {
return element.cars.map(car => {
if (car.type == "sport") {
return car.serial_number;
}
});
});
console.log(serialNumber.join(""));
尝试使用find()
let no;
[
{
customer_id: '5d0757aa4b6620003335aff2',
cars: [
{
type: 'break',
serial_number: '0000X523654FE'
},
{
type: 'sport',
serial_number: '485605FEL45E'
}
]
}
]
.find(element => { return element.cars.find(i => !!(i.type === 'sport' && (no = i.serial_number))) })
console.log(no)
你可以像这样使用Array.find()
:
const response = [{
customer_id: '5d0757aa4b6620003335aff2',
cars: [{
type: 'break',
serial_number: '0000X523654FE'
// ... other data, not useful here
},
{
type: 'sport',
serial_number: '485605FEL45E'
// ...
}
]
}]
let serialNumber = null;
response.find(element => {
return element.cars.find(car => {
if (car.type == "sport") {
serialNumber = car.serial_number;
return true;
}
});
});
console.log(serialNumber);
在数组上使用Array.prototype.find
如下cars
并将序列号返回到外部map
let data = [{
customer_id: '5d0757aa4b6620003335aff2',
cars: [{
type: 'break',
serial_number: '0000X523654FE'
},
{
type: 'sport',
serial_number: '485605FEL45E'
}
]
},
{
customer_id: '5d0757aa4b6620003335aff2',
cars: [{
type: 'break',
serial_number: '0000X523654FE'
},
{
type: 'sport',
serial_number: '485605FEL45E'
}
]
}]
let out = data.map(({cars}) => cars.find(e => e.type === 'sport').serial_number);
console.log(out)