JS 数组对象判断属性值是不是为空?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS 数组对象判断属性值是不是为空?相关的知识,希望对你有一定的参考价值。

// 实现效果:
// 提交时判断 黄金、白银、翡翠等数组对象中的值是否有输入。
// 1、如果全为空则不通过。
// 2、只要有一组weight与number有输入则通过。
// 注意:
// 例如:黄金的weight有值,而number没值也是不能过。
// 必需要同一组的对象黄金的weight和number有值才能通过。

var arr=[
name:'黄金', weight:'', number:'' ,
name:'白银', weight:'', number:'' ,
name:'翡翠', weight:'', number:''
]
// 方法1, 设置检查标记bool值, 遍历数组, 当 weight 和 number 都不为空时变更标记值
var result = false;
for(var item of arr)
if(item.weight != '' && item.number != '')
result = true;


console.log(result?'通过':'不通过')

// 方法2, 使用 filter 过滤数组, 将数组中所有符合 weight 非空且 number 非空的数据保留, 其他的丢弃, 最终检查过滤后数组的长度是否大于0
var filter_res = arr.filter(item => item.weight != '' && item.number != '')
console.log(filter_res.length > 0 ? '通过': '不通过')追问

你好,还有个小问题,
判断所有对象的weight 或 number 某一项有输入时必需同时有值 ,weight 和number都为空则不判断。

追答

和判断某一项符合的做法类似

先对 arr 做一次过滤, 把不符合条件的对象过滤掉, 如果过滤后的数组长度和原数组 arr 的长度完全一致, 则说明被过滤掉的不符合条件的对象是0个, 也就是 arr 数组中的对象均符合条件
var filter_res = arr.filter(item => item.weight != '' && item.number != '')
console.log(filter_res.length === arr.length ? '通过': '不通过')

参考技术A var weights=document.getElementsByName("weight");
var numbers=document.getElementsByName("number");
if((weights[0].value&&numbers[0].value)||(weights[1].value&&numbers[1].value)||(weights[2].value&&numbers[2].value))
//通过
else
//不通过
追问

数组并非固定3条数据,可以是无限条。

追答

无限条就这样呗:
var weights=document.getElementsByName("weight");
var numbers=document.getElementsByName("number");
var i;
for(i=0;i<weights.length;i++)
if(!(weights[i].value&&numbers[i].value))break;

if(i<weights.length)
//不通过
else
//通过

以上是关于JS 数组对象判断属性值是不是为空?的主要内容,如果未能解决你的问题,请参考以下文章

js判断数组是不是为空

判断json对象是不是为空()

js 判断数组是不是为空数组

js报错:为空或不是对象

jquery判断数组是不是为空

js判断对象是不是为空对象的几种方法