js中判断对象数组中是不是有某个属性值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js中判断对象数组中是不是有某个属性值相关的知识,希望对你有一定的参考价值。
可以用数组的indexOf函数,方法arr.indexOf(find,start);find:要找的内容,必须;
start:查找开始下标,可选;
返回:查找数据所在的下标,如果没找到,返回-1
如果只要知道是否有8这个数字,直接调用arr.indexOf(8),如果返回值不为-1,说明找到了
var s=[1,2,3,5,6,9];
var u=s.indexOf(5);//返回5所在的下标3
var d=s.indexOf(8);//返回-1
console.log(u);
console.log(d); 参考技术A if(obj.attr == undefined) 参考技术B 说详细点。。
JS 数组对象判断属性值是不是为空?
// 实现效果:
// 提交时判断 黄金、白银、翡翠等数组对象中的值是否有输入。
// 1、如果全为空则不通过。
// 2、只要有一组weight与number有输入则通过。
// 注意:
// 例如:黄金的weight有值,而number没值也是不能过。
// 必需要同一组的对象黄金的weight和number有值才能通过。
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 ? '通过': '不通过')
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处理一个数组中包含多个对象,根据对象的一个属性查找到这个对象