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 ? '通过': '不通过')

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-09-17
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{
//通过
}

本回答被网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网