在ReactJS中循环使用const

时间:2018-04-30 16:38:19

标签: reactjs

这真的很小......但我无法弄清楚这一点。

  const compose_url = (id, key) =>
   `${id}/image/_/${key}`;


  const get_images = compose_url(
    this.props.dataset_id, // pass in prefix (2018_1_25)
    get_image_arrays // This returns an array with two arrays e.g. [["img1.png"], ["img2.png"]]
  );

我想让它返回“2018_1-25 / img1.png”和“2018_1-25 / img2.png”,但我只是为第一个数组获得了这个,(“2018_1-25 / img1.png” )不是第二个。我怎么能循环这个来为两个图像添加前缀?

请帮助......我没有找到有关如何执行此操作的文档或示例。

4 个答案:

答案 0 :(得分:1)

const get_images = [];
const { dataset_id: id } = this.props;

get_images_array.forEach(arr => {
  arr.forEach(path => {
    get_images.push(
      compose_url(
        id,
        path
      )
    );
  }
});

编辑:

我对其他答案采用了不同的方法,而不是修改compose_url方法,而是使用了给定的数据。此方法迭代顶层数组(get_images_array),然后迭代get_images_array中的每个数组。对于内部数组中的每个路径,compose_url的结果将被推送到get_images结果数组。

答案 1 :(得分:1)

你需要在这里更新compose_url()函数,并确保你总是将数组作为vairable的第二个传递。

const compose_url = (date, imageArray) => 
    imageArray.map((eachImage) => `${id}/image/_/${eachImage}`);

希望这会有所帮助。

答案 2 :(得分:0)

试试这个。

const compose_url = (id, arr) => {
  return arr.map((ar) => (
    `${id}/image/_/${ar}`
  ));
};

此功能将返回[ "2018_1_25/image/_/img1.png", "2018_1_25/image/_/img2.png" ]

答案 3 :(得分:0)

您可以简单地映射数组,如

const compose_url = (id, arr) => {
    return [].concat(arr.map(data => [].concat(data.map(key) => `${id}/${key}`)));
}



 const get_images = compose_url(
    this.props.dataset_id, // pass in prefix (2018_1_25)
    get_image_arrays // This returns an array with two arrays e.g. [["img1.png"], ["img2.png"]]
  );