当我尝试使用带有{}的箭头函数时,它似乎认为它是一个对象并抛出一个错误。我认为这是箭头函数通常定义的方式吗?
以下代码的错误为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}}
答案 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);