未捕获的类型错误:无法读取未定义的 javascript .filter() 的属性'call'



我有这个React方法,当用户从下拉列表中选择某个东西时,它会处理

handleAreeTematicheChange(values) {
if (Object.keys(values).length >= 0) {
let newValue = [];
const newAreeTematiche = values;
if (Object.keys(values).length > 1) {
newValue.push({ value: '-1', label: `${Object.keys(values).length} aree tematiche selezionate` });
} else {
newValue = values;
}
const newList = [];
for (const filter in newAreeTematiche) {
newList.push(newAreeTematiche[filter].value);
}
const filterAreeTematiche = values.filter(item => item.value !== '-1' && newList.indexOf(item) === -1);
const newListString = newList.join('|');
this.setState({ filterAreeTematiche, selectedAreeTematiche: newListString });
this.onReloadAllElements(newListString);
} else {
this.setState({ filterAreeTematiche: [], selectedAreeTematiche: undefined });
this.onReloadAllElements(null);
}
}

触发错误

const filterAreeTematiche = values.filter(item => item.value !== '-1' && newList.indexOf(item) === -1);

我确信问题是values在那个时刻是一个对象,所以.filter()不起作用,因为它只对数组起作用。

它还给了我.length的错误,我用Object.keys解决了它,正如你所看到的。如何过滤对象?我必须把它转换成数组吗?

如前所述,Object.filter无效,因此请将对象转换为键数组,并在函数中使用这些键来获得如下值。只需将">filterAreeTematice";值。

const filterAreeTematiche = Object.keys(values)
.filter(k => (values[k] !== '-1' && newList.indexOf(values[k]) === -1))
.map(key => ({ value: values[key] }));

这将返回一个带有单个键"的对象数组;值";。由于我不知道你在这个州到底想要什么,我只是举了一个例子;值";键,您可以在map函数中根据需要更改对象。

最新更新