javascript - 我如何从对象中过滤未定义
问题描述
我想创建一个 MySQL 查询来过滤来自 MySQL 的数据。但我遇到了一个问题。我写了一个 for 循环,在其中我用 jQuery 计算分区的元素。我也发现了那个东西的问题。
首先是我的功能。
function filterFunnel(filterid){
let filterLists = $("#funnel-filters").children().filter(".filter");
let query = `SELECT * FROM funnel WHERE `;
let count = 0;
for(i=0;i<Object.keys(filterLists).length; i++){
let dom = filterLists[i];
if(dom.value === "Select" || dom.value === ""){
}else{
if(count >= 1){
query += ` AND ${dom.id} = ${dom.value}`;
}else{
query += `${dom.id} = ${dom.value} `
}
count += 1;
}
}
console.log(query);
}
当我执行这个命令时,我得到一个错误 dom is not defined 我发现这是从哪里来的。
如果您查看我执行的第二个函数,它会返回 2 undefined。
现在,当我在循环内使用 console.log() 时,它正在工作,但当我在它之外使用它时它不起作用。
我认为异步函数可以解决这个问题,但我不知道如何做到这一点。我相信问题仅由 dom 变量引起。
解决方案
我通过检查响应是否未定义来修复它,如果是,那么它将返回查询。这就是我所做的。
function filterFunnel(filterid){
let filterLists = $("#funnel-filters").children().filter(".filter");
let query = `SELECT * FROM funnel WHERE `;
let count = 0;
for(i=0;i<Object.keys(filterLists).length; i++){
let dom = filterLists[i];
if(dom === undefined){
return query;
}else{
if(dom.value === "Select" || dom.value === ""){
}else{
if(count >= 1){
query += ` AND ${dom.id} = ${dom.value}`;
}else{
query += `${dom.id} = ${dom.value} `
}
count += 1;
}
}
}
}
推荐阅读
- django - 无法连接到 docker 和 django 中的 redis
- rust - Rust 中的一个终身问题,一个悬而未决的参考
- python - 行为特征文件数据
- javascript - 如果字符串在任何地方包含 url 使用 javascript 将其转换为链接
- javascript - 如何在 nodejs 开始时添加用户?
- java - RESTEASY004655 当我生成更大的 PDF 文件时
- r - ggplot中的多个x轴标签行
- java - 从模板调用数据流作业时如何设置 defaultWorkerLogLevel?
- python - 如何对未来的预测结果进行逆差分?
- c++ - 这个 C++ 2014 声明是什么?它是一个拉姆达吗?