"" in line.map(function(){return $(this).val();})。get()

时间:2016-10-19 16:51:35

标签: javascript arrays

我正在检查是否有任何""像这样的元素数组中的值

"" in line.map(function(){return $(this).val();}).get()

并且它返回false,但是当我在浏览器上调试它时,我会在数组上得到它

line.map(function(){return $(this).val();}).get() = ["1", "2", "4", "", "", "", "", "", "3"]

我想这应该回归正确吗?

我已经尝试使用.each,但除非我使用带return false;的全局变量

,否则我无法返回

2 个答案:

答案 0 :(得分:2)

The in operator不会检查数组是否包含值(可能是indexOfincludes),它会枚举对象的属性。例如:



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;
&#13;
&#13;

相反,如果您需要元素,则应使用find;如果只需要检查在线状态,则应使用some

&#13;
&#13;
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;
&#13;
&#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() === "");