Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将计数作为属性添加到javascript对象_Javascript - Fatal编程技术网

将计数作为属性添加到javascript对象

将计数作为属性添加到javascript对象,javascript,Javascript,我有两个阵列: 一个具有类别的 一个带有datarecords 每个数据记录都属于特定的类别 每次使用数据记录上的过滤器(例如搜索字段),我都想将每个类别的记录总数添加到每个类别对象,这样我就可以在每个选项卡窗格(例如文本:Algemeen,值:'general,countFiltered:2) 我为此做了一个决定 到目前为止,我没有得到任何计数过滤,在本地我得到一个恒定的错误,对应于我小提琴中的第78行: 未捕获(承诺中)类型错误:无法读取未定义的属性“0” 我怎样才能做到这一点呢?这并不

我有两个阵列:

  • 一个具有
    类别的
  • 一个带有
    datarecords
每个数据记录都属于特定的类别

每次使用
数据记录
上的过滤器(例如
搜索字段
),我都想将每个类别的记录总数添加到每个
类别对象
,这样我就可以在每个
选项卡窗格
(例如
文本:Algemeen
值:'general
countFiltered:2

我为此做了一个决定

到目前为止,我没有得到任何计数过滤,在本地我得到一个恒定的错误,对应于我小提琴中的第78行:

未捕获(承诺中)类型错误:无法读取未定义的属性“0”


我怎样才能做到这一点呢?

这并不是你想象的那样:

var filtered = results.filter(function (results) {
    return (results.category.toLowerCase() == this.categories[cat].value.toLowerCase());
});
您可以将
thisArg
传递给:

或者在ES6中,您可以使用:


这种错误有史以来最糟糕的描述?我认为这个问题其实是有道理的,你只需要读得慢一点。当他搜索时,他希望每个类别的结果数量显示在该类别的窗格上,有点像facebook徽章。解决了!为什么你需要通过一个thisArg?它是否适用于我的vue模型中的结果?@BFlyDesign闭包只有在外部作用域变量不受自身变量的影响时才可以访问外部作用域变量,但每次在Javascript中调用函数时,都会设置其内部的
this
值,因此与其他变量不同的是
this
始终受到影响。如果你传入第二个参数,你就告诉
filter
你希望
this
在你的回调中是你传入的任何东西。在您的例子中,您从回调外部传入了
this
,因此即使回调仍然有自己的
this
阴影覆盖外部
this
,它指的是同一个对象。我需要在我的小提琴中更改什么才能让它在使用searchfield时自动更新计数?@BFlyDesign我直到现在才听说Vue,所以我不确定这是否是最好的方法,但似乎您只需要从过滤器中调用
令牌。countFiltered
。看到这里的更新:没有完全按照预期工作,但你已经把我放在正确的轨道上了!谢谢
var filtered = results.filter(function (results) {
    return (results.category.toLowerCase() == this.categories[cat].value.toLowerCase());
}, this);
var filtered = results.filter(
    results => results.category.toLowerCase() == this.categories[cat].value.toLowerCase() 
);