检查数组是否为空或空
我想知道如何检查在jQuery中数组是否为空或空。 我试过array.length === 0
但它没有工作。 它也没有抛出任何错误。
这是代码:
var album_text = new Array(); $("input[name='album_text[]']").each(function(){ if( $(this).val() && $(this).val() != '') { album_text.push($(this).val()); } }); if (album_text.length === 0) { $('#error_message').html("Error"); } else { // send data }
只要你的select器实际上工作,我没有看到你的代码检查数组的长度错误。 这应该做你想要的。 有很多方法来清理你的代码,使其更简单,更具可读性。 这是一个清理版本,里面有关于我清理的内容。
var album_text = []; $("input[name='album_text[]']").each(function() { var value = $(this).val(); if (value) { album_text.push(value); } }); if (album_text.length === 0) { $('#error_message').html("Error"); } else { //send data }
一些关于你在做什么和我改变了什么的笔记。
-
$(this)
总是一个有效的jQuery对象,所以没有理由检查if ($(this))
。 它里面可能没有任何DOM对象,但是如果需要的话,可以用$(this).length
来检查,但在这里没有必要,因为如果没有这样的项目,.each()
$(this)
在你的.each()
循环里永远是一些东西。 - 在相同的函数中多次使用$(this)是低效的。 最好把它变成局部variables,然后从局部variables中使用它。
- build议使用
[]
而不是new Array()
初始化数组。 -
if (value)
时,值预期是一个string将既保护value == null
,value == undefined
和value == ""
所以你不必做,if (value && (value != ""))
。 你可以这样做:if (value)
检查所有三个空的条件。 -
if (album_text.length === 0)
会告诉你,如果数组是空的,只要它是一个有效的初始化数组(它在这里)。
你想用这个select器做什么$("input[name='album_text[]']")
?
用户JQuery是EmptyObject来检查数组是否包含元素。
var testArray=[1,2,3,4,5]; var testArray1=[]; console.log(jQuery.isEmptyObject(testArray)); //false console.log(jQuery.isEmptyObject(testArray1)); //true
在推入数组之前,您应该检查''
(空string)。 你的数组的元素是空string。 那么你的album_text.length === 0
将工作得很好。
我认为从jquery使用$ .isEmptyObject来检查数组是否为空是非常危险的,就像@jesenko提到的那样。 我刚刚遇到了这个问题。
在isEmptyObject文档中 ,它提到:
参数应该总是一个普通的JavaScript对象
你可以通过$.isPlainObject
来确定。 $.isPlainObject([])
的返回值为false。