检查对象中的值是不是为空或空javascript

Posted

技术标签:

【中文标题】检查对象中的值是不是为空或空javascript【英文标题】:Check if value in object is null or empty javascript检查对象中的值是否为空或空javascript 【发布时间】:2017-11-07 04:56:15 【问题描述】:

这是我的问题:我可以拥有这个对象数组:

[
    "name": "Alex",
    "code": "05422180283",
    "pIva": "05422180283",
    "subCode": null
, 
    "name": "John",
    "code": null,
    "pIva": null,
    "subCode": "IT"
, 
    "name": "Billy",
    "code": null,
    "pIva": null,
    "subCode": "IT"
, 
    "name": "Tom",
    "code": null,
    "pIva": null,
    "subCode": "IT"
]

这个 json 被ng-repeat 使用在一个表单中,并且应该填充空字段。按下提交按钮时,系统应检查是否仍有空白字段。所以现在的情况可能是这样的:

[
    "name": "Alex",
    "code": "05422180283",
    "pIva": "05422180283",
    "subCode": null
, 
    "name": "John",
    "code": "88985556",
    "pIva": "1919ASVVV",
    "subCode": "9991VVVV"
, 
    "name": "Billy",
    "code": "89952366555",
    "pIva": "BB588918989",
    "subCode": "ASA234434"
, 
    "name": "Tom",
    "code": null,
    "pIva": "541198198",
    "subCode": "ACEVV9999"
]

如您所见,有 2 个空字段。在这种情况下,系统应告知用户有 2 个空字段。 (带有警报或类似的东西)。否则用户可以毫无问题地提交表单。这是我到目前为止所做的:

angular.forEach($scope.myArray, function(items)
                if(_.chain(items).find(_.isNull).isNull().value()) 
                    //console.log('Found one');
                    formHasEmptyFields = true;
                 else 
                    //console.log('Did not find one');
                    formHasEmptyFields = false;
                
                if(_(items).find(_.isNull) === null) 
                    //console.log('Found one');
                    formHasEmptyFields = true;
                 else 
                    //console.log('Did not find one');
                    formHasEmptyFields = false;
                
            );
            if(formHasEmptyFields == true) 
                alert('There are empty fields');
             else 
                submitFunction($scope.myArray);
            

但它不起作用,因为它似乎只检查最后一个对象。事实上,如果我填写表格中的最后一个对象,它不会向我显示警报。任何想法? $scope.myArray 当然是我的对象数组

【问题讨论】:

能否附上你的html表单 【参考方案1】:

问题在于,虽然formHasEmptyFields 确实在有null 时设置为true,但在下一次迭代中它会再次被false 覆盖。

所以,要解决这个问题,只需在循环之前和循环内设置一次formHasEmptyFields = false;,只保留将其设置为true 的代码。

话虽如此,someevery 方法对于这种情况比 forEach 循环更有用。您可能想改用它。

【讨论】:

那么,你的主要意思是删除else条件? 确实,放下它们。【参考方案2】:

查看MDN docssome

const hasItemWhithFalsyCode = items.some(x => !x.code);

你可以做各种各样的事情,比如过滤掉没有代码的项目

const itemsWithTruthyCode = items.filter(x => x.code);

明确检查null

const hasItemWhithNullCode = items.some(x => x.code === null);

【讨论】:

确实,在这种情况下使用some 比使用forEach 更好:只要有一定的条件就退出循环。如果您专门为他们的案例提供代码,这将对 OP 很有用。

以上是关于检查对象中的值是不是为空或空javascript的主要内容,如果未能解决你的问题,请参考以下文章

如何检查 MySQL 中的列是不是为空或 null?

spark中的isNullOrEmpty函数检查数据框中的列是不是为空或空字符串

评估空或空 JSTL c 标签

在 joi 和 express-validation 中允许字符串为空或空

我想检查 datagridview 列是不是有数据或空/空

值不能为 null 或空. 参数名: value