forEachisnotafunction中国菜名
问题描述
在写⼀个递归⽅法后发现⼀个问题,该递归⽅法在⼀个watch监听字段中调⽤,于是就报了如下错误:
Error in callback for watcher 'filterTxt'. list.forEach is not a function
美津浓是哪个国家的品牌
孔雀怎么分公母问题解决
第⼀个callback的问题可能是监听世间延迟的问题,可以在watch中调⽤⽅法的地⽅使⽤tTimeout解决。
第⼆个问题是递归过程中传⼊的参数不是数组导致的。
解决了递归的问题,第⼀个callback的问题也好了。递归过程中第⼀次传⼊的是数组,第⼆次传⼊的如果是类数组也会有同样的问题,所以必须慎重。
如果是类数组可以考虑转化成数组在使⽤forEach
filterOption() {
老太原菜馆
let label = this.props.label
let id = this.props.value
let option = []
const getOption = list => {
list.forEach(item => {
if (item[label].includes(this.filterText)) {
option.push({label: item[label], value: item[id]})
if (item.children) {
恭请getOption(item.children) // 出错的地⽅在这⾥错误的直接传了item导致的 getOption(item)
}
}
})
柔肠百结
毛笔字古诗}
getOption(this.data)
this.options = option
},
备注
毕业背景图片const parent = this.el.parentElement; // 这是⼀个类数组的node节点集合,此时不可直接使⽤forEach
Array.prototype.forEach.call(parent.children, child => {
console.log(child)
});