Как изменить порядок ассоциативного массива другого типа в Typescript?

#javascript #typescript

#javascript #typescript

Вопрос:

Я хочу изменить порядок ассоциативного массива другого типа, чтобы извлечь то же свойство. Итак, я попытался создать пример кода ниже.

 const array1 = [{name:'john',age:25},{name:'Bob',age:33}];
const array2 = [{name:'Jen',age:35,id:1},{name:'Mera',age:31,id:2}];
const array3 = array1.concat(array2);
console.log(array3)
  

и этот результат кода похож на этот.

 0: {name: "john", age: 25}
1: {name: "Bob", age: 33}
2: {name: "Jen", age: 35,id:1}
3: {name: "Mera", age: 31,id:2}
  

моя цель чуть ниже.

 0: {name: "john"}
1: {name: "Bob"}
2: {name: "Jen"}
3: {name: "Mera"}
  

Не мог бы кто-нибудь просветить меня, пожалуйста?

Ответ №1:

Если вы просто хотите, чтобы значения имели name свойство, то вам следует просто map() заменить элементы массива на те, у которых есть только name свойство. Например:

 const array3 = [...array1, ...array2].map(({ name }) => ({ name }));

console.log(array3); 
// [ { "name": "john" }, { "name": "Bob" }, { "name": "Jen" }, { "name": "Mera" } ] 
  

Здесь я использую разброс в литералах массива вместо concat() и деструктурирующее присваивание для сопоставления объектов. Если это выглядит странно, вы могли бы переписать его как:

 const array4 = array1.concat(array2).map(value => ({ name: value.name }));
  

что делает практически то же самое. Надеюсь, это поможет; удачи!

Ссылка на игровую площадку

Комментарии:

1. Вам это не нужно .slice() ?