Javascript 引用错误变量未在对象forEach上定义
我得到的引用错误w未在forEach对象中定义。 this.primaryfilterdata是产品json对象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
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对象是不正确的。你能根据我的意见检查一下吗。