使用map javascript从数组数组中获取值



我想知道如何使用 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)

最新更新