如何使用JavaScript或jQuery遍历数组并按site_id筛选展示匹配内容
代码问题排查与修复方案
你的代码共有2个核心错误,具体如下:
- 过滤逻辑写反:
filter方法中返回条件写的是el.site_id !== siteID,会把不匹配指定site_id的条目筛选出来,和你需要查询匹配项的需求完全相反,需要改成全等判断=== - 回调参数引用错误:
$.each的回调函数参数定义为index, value,但你在函数内使用了未定义的变量el读取字段,要么把参数名改为el,要么把取值语句改成value.name
修复后的完整代码
var siteID = 13; // 你的源数组 var myArray = [ {"id":23,"site_id":13, "name":"Test 1","date":"2019-01-26T11:02:18.5661283","category":"some cats"}, {"id":151,"site_id":15, "name":"Test 2","date":"2018-11-04T10:50:53.1756567","category":"some cats"} ]; // 修复原有jQuery写法 $.each(myArray.filter(function (el) { return el.site_id === siteID; // 修改判断逻辑,筛选匹配的条目 }), function(index, el) { // 修改参数名和后面的引用对应 var fo = '<p>'+el.name+'</p>'; $('.forms').append(fo); });
可选优化方案(原生JS实现,无需依赖jQuery)
const siteID = 13; myArray.filter(el => el.site_id === siteID) .forEach(el => $('.forms').append(`<p>${el.name}</p>`));
内容的提问来源于stack exchange,提问作者drago
相关产品推荐
相关产品推荐

