JavaScript如何在两个数组上映射一个对象

时间:2019-06-14 08:18:49

标签: javascript reactjs

我确实有一个包含某些字段的对象,其中三个是数组。 我想一口气绘制它们。

让我展示一下我现在的状态:

containerNames = this.state.fileContent.xContainers.map(xContainer => <Container containerName={xContainer} />);

containerNames.push(this.state.fileContent.yContainers.map(yContainer => <Container containerName={yContainer} />));

containerNames.push(this.state.fileContent.zContainers.map(zContainer => <Container containerName={zContainer} />));

对我来说,似乎确实可以做出不同的选择。有一个lambda?

6 个答案:

答案 0 :(得分:3)

OP中的代码将生成类似[1, 2, 3, [4, 5, 6], [7, 8, 9]]的内容,我希望这不是您想要的。如果您想要[1, 2, 3, 4, 5, 6, 7, 8, 9],请使用此:

const containerNames = ["xContainers", "yContainers", "zContainers"].
    flatMap(field => this.state.fileContent[field].map(...));

如果需要[[1, 2, 3], [4, 5, 6], [7, 8, 9]],则将flatMap更改为map

答案 1 :(得分:1)

您要创建一个数组数组,因此请使用嵌套在另一个数组中的.map

const { xContainers, yContainers, zContainers } = this.state.fileContent;
containerNames = [xContainers, yContainers, zContainers].map(
  containers => containers.map(container => <Container containerName={container} />)
);

答案 2 :(得分:1)

const {fileContent : {xContainers, yContainers, zContainers}} = this.state;

const mergedArray = [
   ...xContainers,
   ...yContainers,
   ...zContainers
]

const containerNames = mergedArray.map(container => <Container containerName={container} />)

答案 3 :(得分:1)

containerNames = [...xContainers, ...yContainers, ...zContainers].map(
  containers => containers.map(container => <Container containerName={container} />)
);

答案 4 :(得分:1)

FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build LABEL maintainer deic@gmail.com WORKDIR /home/dejant/desktop/app COPY . . RUN dotnet restore RUN dotnet publish ./ParallelDemo/ParallelDemo.csproj -o /publish/ WORKDIR /publishdocker ENTRYPOINT ["dotnet", "/bin/ParallelDemo.dll"] 函数中,将mapToContainer参数传递给您的c

<Container containerName={c} />

答案 5 :(得分:0)

如果要合并三个数组并映射它们,可以按照以下步骤进行操作

[...xContainers, ...yContainers, ...zContainers].map(c => <Container containerName={c} />)

如果您对额外的库没问题,可以使用lodash

_.map(_.concat(xContainers, yContainers, zContainers), c => (<Container containerName={c} />))