我正在检查是否有任何""像这样的元素数组中的值
"" in line.map(function(){return $(this).val();}).get()
并且它返回false,但是当我在浏览器上调试它时,我会在数组上得到它
line.map(function(){return $(this).val();}).get() = ["1", "2", "4", "", "", "", "", "", "3"]
我想这应该回归正确吗?
我已经尝试使用.each
,但除非我使用带return false;
的全局变量
答案 0 :(得分:2)
The in
operator不会检查数组是否包含值(可能是indexOf
或includes
),它会枚举对象的属性。例如:
const data = ['a', 'b', 'c', 'd', 'e', 'f'];
for (f in data) {
console.log('gets the index:', f);
console.log('gets the value:', data[f]); // <- note the access using f
}
&#13;
相反,如果您需要元素,则应使用find
;如果只需要检查在线状态,则应使用some
:
const data = ['a', 'b', 'c', 'd', 'e', 'f'];
console.log('find an element by value:', data.find(it => it === 'c'));
console.log('check if any elements match:', data.some(it => it === 'c'));
&#13;
答案 1 :(得分:0)
您应该使用过滤器,并检查长度
var hasEmpty = line.filter(function(){ return $(this).val().trim() === ""}).length > 0;
或更多ES2015,在jQuery集合上使用Array.some
var hasEmpty = line.toArray().some((el) => $(el).val() === "");