如何将数据附加到嵌套数组元素

时间:2019-10-01 10:21:28

标签: javascript arrays react-native

我正在尝试添加数据嵌套arra y,并且已经尝试了许多 stackoverflow 链接来解决解决这个问题,但是没有成功。

原始数据:

cuisine: [
                    [
                        "Middle Eastern",
                        4
                    ],
                    [
                        "Western",
                        4
                    ],
                    [
                        "Pasta Dishes",
                        2
                    ],
                    [
                        "Salad",
                        2
                    ],
                    [
                        "Mexican",
                        1
                    ],
                    [
                        "Soup",
                        1
                    ],
                    [
                        "snacks",
                        1
                    ]
                ],

所需数据:

cuisine: [
                    [
                        1
                        false
                        "Middle Eastern",
                        4
                    ],
                    [
                        2
                        false
                        "Western",
                        4
                    ],
                    [
                        3
                        false
                        "Pasta Dishes",
                        2
                    ],
                    [
                        "Salad",
                        2
                    ],
                    [
                        4
                        false
                        "Mexican",
                        1
                    ],
                    [
                        5
                        false
                        "Soup",
                        1
                    ],
                    [
                        6
                        false
                        "snacks",
                        1
                    ]
                ],

我的代码

  this.setState({ cousineArray: cuisine }, () => {
    this.addValuesToArray(this.state.cousineArray);
  });


  addValuesToArray = commingArray => {
    console.warn(commingArray);
    if (commingArray !== null && commingArray !== undefined) {
      for (i = 0; i < commingArray.length; i++) {
        this.setState(
          {
            commingArray: this.state.commingArray.push(i, false)
          },
          () => {
            console.log("Coming Array ==> ", commingArray[1]);
          }
        );
      }
    }

};

但无法正常工作并引发以下错误

  

无法读取未定义的属性“ push”

我做错了什么。如果这样做不是很好的方法,请告诉我更好的方法。谢谢

2 个答案:

答案 0 :(得分:2)

请勿在循环中设置状态,还请使用map为嵌套数组正确设置值:

addValuesToArray = commingArray => {
  console.warn(commingArray);
  if (commingArray !== null && commingArray !== undefined) {
    const res = commingArray.map(arr => {
      return arr.map((innerArr, i) => {
        return [...innerArr, i, false]
      })
    })

    this.setState({
        commingArray: res
      },
      () => {
        console.log("Coming Array ==> ", commingArray);
      }
    );
  }
}

答案 1 :(得分:1)

使用forEach循环使用您自己的逻辑将值推入数组

var cuisine= [
  [
    "Middle Eastern",
    4
  ],
  [
    "Western",
    4
  ],
  [
    "Pasta Dishes",
    2
  ],
  [
    "Salad",
    2
  ],
  [
    "Mexican",
    1
  ],
  [
    "Soup",
    1
  ],
  [
    "snacks",
    1
  ]
]
cuisine.forEach(function(e,j){
e.unshift(false)
e.unshift(j)
e.unshift({key:'value'})
})
console.log(cuisine)