如何在我的数组中标记单个值

时间:2017-08-25 10:38:24

标签: javascript html reactjs

我在arrayarrays js并希望为不同的行添加颜色,因此我为每个元素数组添加新值'color'并设置background-color我的tr对此值:

  for (var element in res.data.results) {
    if(res.data.results[element]['name'] === nextProps.name){
      res.data.results[element].color = 'white';
      tmpResult.push(res.data.results[element]);
    }
  }

  for (var value in valuesToCheck) {
    for (var i = 0; i < (tmpResult.length - 1); i++) {
        if(tmpResult[i][valuesToCheck[value]] === tmpResult[i+1][valuesToCheck[value]]){
          continue;
        } else {
          tmpResult[i].color = '#DC143C';
          tmpResult[i+1].color = '#DC143C';
        }
    }
  }

    <tbody>
      {this.state.results.map(result =>
        <tr style={{'backgroundColor': result.color}}>
          <td>{result.name}</td>
        </tr>
      )}
    </tbody>

我的元素中有很多值(元素是我的结果中的一个数组,这是我的主要对象,我将值从表中取出)现在我想要的颜色不是所有的行,而只是要更改的值。我怎样才能做到这一点?我试图在我的数组中制作一个地图,其中值成为一个键,该键的值将为“颜色”,然后更改我th中单个单元格的背景:

res.data.results[elem]['name'].color = 'white';

,但我收到了一个错误:

TypeError: can't assign to properties of (new String("my name as string")): not an object

1 个答案:

答案 0 :(得分:0)

好的,我刚从元素中的每个值中创建了array

    for (var elem in res.data.results) {
      if(res.data.results[elem]['name'].toLowerCase() === nextProps.name){
        res.data.results[elem]['name'] = [res.data.results[elem]['name'], 'black'];
        res.data.results[elem]['another_parameter'] = [res.data.results[elem]['another_parameter'], 'black'];
        tmpResult.push(res.data.results[elem]);
      }

如果我需要,我将其更改为另一种颜色:

    for (var value in valuesToCheck) {
      for (var i = 0; i < (tmpResult.length - 1); i++) {
          if(tmpResult[i][valuesToCheck[value]][0] === tmpResult[i+1][valuesToCheck[value]][0]){
            continue;
          } else {
            tmpResult[i][valuesToCheck[value]][1] = 'red';
            tmpResult[i+1][valuesToCheck[value]][1] = 'red';
          }
      }
    }

并将其添加到table代码中的html

    <tbody>
      {this.state.results.map(result =>
        <tr>
          <td style={{'color': result['name'][1]}}>{result.name[0]}</td>
          <td style={{'color': result['another_value'][1]}}>{result.another_value[0]}</td>
        </tr>
      )}
    </tbody>

我认为存在更好的解决方案,所以我一直在等待回复。