Сортировать массив объектов, глядя на другой порядок массива

1

Я пытаюсь сортировать массив объектов, глядя на другой порядок массивов, мой первый массив - это что-то вроде этого

["HV001O3XL", "HV001OSML", "HV001OLGE"]

и мой массив объектов похож:

[{productcode: "HV001OSML", price: 6, qty: "2", desc: "HV001 WAISTCOAT ORN", stock: "138"},{productcode: "HV001OLGE", price: 6, qty: "1", desc: "HV001 WAISTCOAT ORN", stock: "271"},{productcode: "HV001O3XL", price: 6, qty: "1", desc: "HV001 WAISTCOAT ORN", stock: "1112"}]

Я хотел бы перетасовать массив объектов так, чтобы object.productcode соответствовал первому массиву, HV001O3XL был первым вместо HV001OSML и т.д. Возможно ли это в угловом или javascript?

Теги:
arrays

2 ответа

4
Лучший ответ

const objs = [
	{
		productcode: "HV001OSML",
		price: 6,
		qty: "2",
		desc: "HV001 WAISTCOAT ORN",
		stock: "138"
	},
	{
		productcode: "HV001OLGE",
		price: 6,
		qty: "1",
		desc: "HV001 WAISTCOAT ORN",
		stock: "271"
	},
	{
		productcode: "HV001O3XL",
		price: 6,
		qty: "1",
		desc: "HV001 WAISTCOAT ORN",
		stock: "1112"
	}
];
const result = [
	"HV001O3XL",
	"HV001OSML",
	"HV001OLGE"
].map((key) => objs.find(item => item.productcode === key));
console.log(result);
  • 0
    Спасибо за это, работал отлично.
  • 0
    Единственная проблема с этим состоит в том, что он добавляет один и тот же объект дважды, поэтому он заканчивается [{product code: "HV001OLGE", цена: 6, кол-во: "2", desc: "HV001 WAISTCOAT ORN", склад: "271"}, {product code: "HV001OLGE", цена: 6, кол-во: "2", desc: "HV001 WAISTCOAT ORN", склад: "271"}]
Показать ещё 1 комментарий
1
const orders = ['a', 'b', 'c', 'd'];
let objects = [{
    code: 'd'
}, {
    code: 'c'
}, {
    code: 'a',
}, {
    code: 'b'
}]

objects.sort((a, b) => orders.indexOf(a.code) - orders.indexOf(b.code));
console.log(objects);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню