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

标签 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

最佳答案

空的检查似乎工作正常。 “第 1 组”中的两个字段都有一个值,并且其消息中没有提及任何一个为“必填”。

不过,您对构建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/

关于javascript - 如何知道javascript中的对象数组中是否有值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32878581/

相关文章:

javascript - 是否可以更改 JavaScript 函数的 `prototype` 属性的名称?

javascript - Android喜欢状态栏?

javascript - 复选框触发事件

php - 当同一页面上有两个相同的 Jquery 时发生冲突

java - 将多个用户输入存储到整数数组中

javascript - mongodb查询字段的对象类型

javascript - 定位 this.props.children 的特定子项

javascript - 如何检查按钮是否有点击监听器

arrays - Swift 无法使用类型为 'find' 的参数列表调用 '([Score], Score)',其中 Score 是一个结构

python - 裁剪 numpy/opencv 图像时的奇怪行为