Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.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 引用错误变量未在对象forEach上定义_Javascript - Fatal编程技术网

Javascript 引用错误变量未在对象forEach上定义

Javascript 引用错误变量未在对象forEach上定义,javascript,Javascript,我得到的引用错误w未在forEach对象中定义。 this.primaryfilterdata是产品json对象 this.primaryfilterdata =[{"id":"Brand","filterValues":[{"id":" FIDO DIDO","count":1,"meta":""},{"id":"addidas","count":1,"meta":""},{"id":"hrx","count":3,"meta":""},{"id":"nike","count":1,"meta

我得到的引用错误w未在forEach对象中定义。 this.primaryfilterdata是产品json对象

this.primaryfilterdata =[{"id":"Brand","filterValues":[{"id":" FIDO DIDO","count":1,"meta":""},{"id":"addidas","count":1,"meta":""},{"id":"hrx","count":3,"meta":""},{"id":"nike","count":1,"meta":""},{"id":"polo","count":2,"meta":""}]},{"id":"fit","filterValues":[{"id":"28","count":3,"meta":null},{"id":"30","count":5,"meta":null},{"id":"32","count":4,"meta":null},{"id":"34","count":3,"meta":null}],"checked":[]},{"id":"color","filterValues":[{"id":"black","count":3,"meta":null},{"id":"orange","count":3,"meta":null},{"id":"red","count":5,"meta":null},{"id":"yellow","count":6,"meta":null}],"checked":[]},{"id":"size","filterValues":[{"id":"l","count":3,"meta":null},{"id":"m","count":5,"meta":null},{"id":"s","count":3,"meta":null},{"id":"x","count":3,"meta":null},{"id":"xl","count":2,"meta":null}],"checked":[]}]
Here is code

    var pfquery={}
    Object.keys(this.primaryfilterdata).forEach(function(key,index){
      var x=this.primaryfilterdata[key].filterValues
      var atrval=this.primaryfilterdata[key].id
      var w=[];     
      Object.keys(x).forEach(function(key1,value){
        //console.log("Original array:", key1);
        var y=x[key1]
        if(y.checked) {
          w.push(y.id);
          pfquery[atrval]=[];
          pfquery[atrval].push(w);
        }       
      })

    }.bind(this));

    console.log(pfquery)
    console.log(w)

通过查看您的代码,我相信您正在尝试获取一个对象(pfquery),该对象保存选中/选择的品牌id

输出如下:

{"Brand":["FIDO DIDO", "nike"]}
首先,console.log(w)出现在错误的位置,超出了范围。因此,请删除该行,这就是您出现此错误的原因

我相信json对象中的“checked”字段没有在正确的位置提到,我认为应该在所有brands FilterValue中提到它。那么只有您的代码检查(如果(y.checked))才能工作/执行

下面是要使代码正常工作必须指定的JSON示例

this.primaryfilterdata =[{"id":"Brand","filterValues":[{"id":" FIDO DIDO","count":1,"meta":"", "checked": true},{"id":"addidas","count":1,"meta":"", "checked": true} ]}]

我希望这就是您希望做的。

w是函数中的局部作用域,因此console.log(w)意味着什么?您可以发布实际的JSON数据,即:
primaryfilterdata
@TomO。我发布jsondata@Shubh如果我删除该控制台.log(x)。。w、 按下覆盖上一个值。请建议将空数组重新分配给循环中的
w
变量。这就是为什么
w
被覆盖的原因。实际上,在check上有一个过滤器值的复选框,这些复选框属性为get truen,那么我猜你提到的JSON对象是不正确的。你能根据我的意见检查一下吗。