箭头功能错误:对象不是函数

时间:2016-08-19 22:09:54

标签: javascript

当我尝试使用带有{}的箭头函数时,它似乎认为它是一个对象并抛出一个错误。我认为这是箭头函数通常定义的方式吗?

以下代码的错误为let allProperties = []; sites.forEach(site => site.properties.forEach(p => {if (!allProperties.find(p)) allProperties.push(p)} ));

sites = [
{
    "properties": [
        { "id": "111-11", "display": "Zone", "value": 1 },
    ]
}];

编辑:网站的定义可能类似于以下内容:

{{1}}

2 个答案:

答案 0 :(得分:1)

Array.prototype.find期望将回调函数作为第一个参数,这不是您提供的,可能没有想到的。

答案 1 :(得分:0)

它在if(!allProperties.find(p))吠叫。它不喜欢.find(),因为你已经为它提供了一个对象作为参数,而不是一个函数。 .find() Docs Here

如果您将其更改为if (allProperties.indexOf(p) === -1) {...},则按预期工作。



var allProperties = [];
var sites = [
{
    "properties": [
        { "id": "111-11", "display": "Zone", "value": 1 },
    ]
}];

sites.forEach(site => site.properties.forEach(p => {
	if (allProperties.indexOf(p) === -1) {
		allProperties.push(p);
	}
}));

console.log(allProperties);