如何知道javascript中的对象数组中是否有值?

时间:2015-10-01 02:37:35

标签: javascript jquery arrays object

我有这个对象数组:

[Object, Object]
 0: Object
    {
     date: ""
     number: undefined
    }
 1: Object
     {
      date: ""
      number: undefined
     }

如果该值不为空,则总是说必需。也许有人可以帮助我更多地了解这一点。

这是我的代码:

$(function(){

 var len = $('#groupContainer > div').length;
 var arr = [];

 for(var i=0; i < len; i++){

    var number = $('#number_' + [i + 1]);
    var date = $('#date_' + [i + 1]);

    console.log(number)

    var a = number.map(function(){
        return this.value;
    });

    var b = date.map(function(){
        return this.value;
    });

    var newObj = {number: a[0], date: b[0]}
    arr.push(newObj);
 }

 for(var c = 0; c < arr.length; c++)
 {
    var count = c + 1;
    var message ="";

    for(var d in arr[c])
    {
        if(arr[c].hasOwnProperty(d))
        {       
            if(arr[c][d] == "")
            {
                message = d + ' is required!';
            }
            message += message + "\n";
        }
    }
    alert('Group: ' + count + ' ' + message + '\n');
  }
});

Demo

3 个答案:

答案 0 :(得分:1)

对空虚的检查似乎正常。 &#34;第1组和第34组中的两个字段;有一个价值,它的信息也没有提到&#34;必需。&#34;

但是,您对message的构建方式存在疑问,请至少报告一次属性:

"Group: 2 date is required!date is required!"

这是由于message

的这些修改
if(arr[c][d] == "")
{
    message = d + ' is required!';
}
message += message + "\n";

使用赋值运算符(message)修改=的第一行将丢弃message可能持有的任何先前值。

var message = "something previous"

message = 'property' + ' is required!';

console.log(message); // "property is required!"

然后另一行重复message的内容,将其附加到自身:

// same as `message = message + message + "\n";`
message += message + "\n";

console.log(message); // "property is required!property is required!\n"

如何修改此选项仅在找到空字段时修改message,并在添加了什么内容的情况下连接到上一个值。

if(arr[c][d] == "")
{
    message += d + ' is required!\n';
    //      ^ concatenate onto the previous `message` value
    //        including the `\n` here
}
// remove the other modification

http://jsfiddle.net/b60981ku/

答案 1 :(得分:1)

您可以通过

检查变量是空还是空
arr[c][d] == null || arr[c][d].length <= 0

如果我没有弄错你想要实现的目标......

FIDDLE

答案 2 :(得分:1)

使用自定义验证

根据我在小评论对话框后的理解,您应该实现自定义验证,例如以下函数中的自定义验证

function isObjectNullOrEmpty(obj) {
    if (!obj) {
        return true;
    }

    var requiredKeys = ['name'];
    for (var i in requiredKeys) {
        var key = requiredKeys[i];
        var value = obj[key];
        if (value === undefined || value === null) {
            return true;
        }

        if ((typeof value === 'string' || value instanceof String) && !value.trim()) {
            return true
        }

    }

    return false;
}

http://jsfiddle.net/nknaftq3/

$(function () {

    var object1 = {
        name: ''
    };
    alert(JSON.stringify(object1) + ' \n\nresult : ' + isObjectNullOrEmpty(object1));


    var object2 = {
        name: 'asd'
    };
    alert(JSON.stringify(object2) + ' \n\nresult : ' + isObjectNullOrEmpty(object2));

});