항목의 조건에 따라 특정 위치에 추가 항목이있는 배열을 복사하는 자바 스크립트의 기능 불변 방법

Sompnd

배열이 있습니다.

[
    { "name": "batman", "hasSidekick": true },
    { "name": "shazam!", "hasSidekick": false },
    { "name": "capt america", "hasSidekick": true },
    { "name": "spiderman", "hasSidekick": false }
]

여기에서 위의 모든 이름을 포함 할 새로운 영웅 이름 배열을 만들고 싶지만 영웅 hasSidekick에 해당하는 경우 그 뒤에 추가 이름이 삽입되어야합니다.

예상 출력 :

[
    "batman",
    "batman's sidekick",
    "shazam!", ,
    "capt america",
    "capt america's sidekick",
    "spiderman"
]

다음을 forEach기반으로 조건부로 추가 항목을 사용 하고 푸시 할 수 있습니다 hasSidekick.

const heroes = [
  { name: "batman", hasSidekick: true },
  { name: "shazam!", hasSidekick: false },
  { name: "capt america", hasSidekick: true },
  { name: "spiderman", hasSidekick: false },
];
let heroesAndSidekicks = [];
heroes.forEach(hero => {
  heroesAndSidekicks.push(hero.name);
  if (hero.hasSidekick) {
    heroesAndSidekicks.push(`${hero.name}'s sidekick`);
  }
});
console.log(heroesAndSidekicks);

그러나 변형없이 함수형 프로그래밍 방식으로 어떻게 할 수 있는지 제안하십시오.

니나 숄츠

당신은 걸릴 수 있습니다 Array#flatMap.

var data = [{ name: "batman", hasSidekick: true }, { name: "shazam!", hasSidekick: false }, { name: "capt america", hasSidekick: true }, { name: "spiderman", hasSidekick: false }],
    result = data.flatMap(({ name, hasSidekick }) => hasSidekick
        ? [name, name + '\'s sidekick']
        : name
    );

console.log(result);

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관