我正在尝试添加数据到嵌套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”
我做错了什么。如果这样做不是很好的方法,请告诉我更好的方法。谢谢
答案 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)