存储具有相同键和不同值的项目

时间:2018-03-04 17:37:01

标签: javascript reactjs react-native

我需要在构造函数中定义一个状态变量来存储以下项目:

  1. abc = 123
  2. abc = 456
  3. abc = 349
  4. def = 378
  5. def = 348
  6. xyz = 123
  7. xyz = 234
  8. 另外,我需要对变量执行以下函数:

    1. 插入新项目。例子:abc = 234,xyz = 239
    2. 删除值为123的abc。
    3. 在插入/删除之前搜索项目是否已存在: if(abc with value 123)出现在变量中。
    4. 有哪些不同的方法可以做到这一点?什么是最好的方法呢?

      截至目前,我正在做这样的事情

      //selectedCars= {} is a dictionary defined in the state contructor of other class
      
      class xyz extends React.Component {
      constructor(props) {
          super(props);
      }
      
      getMeSomething(car, color, event){
      //car can be any car like honda or mercedes
      //selected cars is a dictionary that is passed from other class in to this class as props
              var existingValues = []
              if (this.props.selectedCars[car] != undefined) {
                  existingValues = this.props.selectedCars[car];
              }
              var indexOfCar = existingValues.indexOf(car);
              if (indexOfCar == -1) {
                  if (event.target.checked) {
                      existingValues.push(car);
                  }
              }
              else if (!event.target.checked) {                 
                      existingValues.splice(indexOfCar, 1);
              }
              this.props.selectedCars[car] = existingValues
      }
      
      render() {
          return (
              <div style={{ ...}}>
                      {
                      this.props.cars.map((car, i) => {
                          return <div key={i}><span className="yhn"><label><input type="checkbox" onChange={this.getMeSomething.bind(this, car, this.props.color)} /><span></span></label>{car}</span></div>
                          })
                      }
              </div>
          );
      }
      }
      

1 个答案:

答案 0 :(得分:0)

我建议你使用Array模型。 如果存在,您可以轻松找到存储的项目。

查找

abc=[];
abc [0]=123;
abc [1]=456;
//and it is better to add them like below:
abc.push (789);
abc.push (101);

在你必须使用函数索引之前找出你的变量是否存储在abc上:

I = abc.indexOf(456); // Returns 1 that means you can find 456 on abc [1]
I2 = abc.indexOf (999); // Returns -1 that means the 999 is not stored on abc yet

表现非常完美,您不必担心自己的搜索问题。

但是,根据您的使用情况,对象或词典对您有用。所以请告诉我。