如何为数组中的每个项目分配随机颜色?

时间:2020-01-04 22:29:25

标签: javascript css reactjs colors

我编写了javascript代码,以从颜色列表中获得随机颜色:

const colours = [blue[800], green[500], orange[500], purple[800], red[800]];
const colour = colours[Math.floor(Math.random() * colours.length)];

在我的JSX代码中,我用随机颜色渲染图像

{this.state.data.map((n, i) => {
    return (
    <Avatar style={{backgroundColor: colour}}>{n.author.charAt(0).toUpperCase()}</Avatar>
    );
})}

我遇到的问题是,渲染的每个对象都将具有相同的随机颜色,例如橙子。我要实现的是渲染的每个项目都会有不同的颜色,但是我不确定如何实现。

2 个答案:

答案 0 :(得分:3)

const colours = [blue[800], green[500], orange[500], purple[800], red[800]];
const getColour = () => colours[Math.floor(Math.random() * colours.length)];

{this.state.data.map((n, i) => {
   return (
    <Avatar style={{backgroundColor: getColour()}}> 
      {n.author.charAt(0).toUpperCase()}
    </Avatar>
   );
})}

答案 1 :(得分:1)

这应该有效

{this.state.data.map((n, i) => {
   // move this line here
   const colour = colours[Math.floor(Math.random() * colours.length)];

    return (
    <Avatar style={{backgroundColor: colour}}>{n.author.charAt(0).toUpperCase()}</Avatar>
    );
})}