介绍

本文主要介绍判断数组中是否存在某个元素、并返回所有满足条件的元素;判断数组中的Object中是否存在某个满足条件的元素、并返回所有满足条件的元素、判断数组中的Object中是否存在某个key(键);判断Object中是否存在某个满足条件的元素、判断Object中是否存在某个key(键)、返回Object中所有的key(键)

一、数组中元素为number、string

1. 判断数组中是否存在某个元素

例:arr=[1,2,3,4];

JS方法:
arr.indexOf(3) > -1; // true
arr.indexOf(9) > -1; // false

2. 判断数组中是否存在某个满足条件的元素,并返回所有满足条件的元素

例:筛选数组中的所有奇数:arr=[1, 2, 3, 4, 5, 6, 7, 8, 9];

JS方法:
const list = arr.filter(item => item % 2 === 1);
console.log(list); // [ 1, 3, 5, 7, 9 ]

二、object

1. 判断Object中是否存在某个满足条件的元素

例:

obj = {name:'李四', sex:'男', age:22};
JS方法:
obj.name === '张三'; // true
obj.name === '王五'; // false

2. 判断Object中是否存在某个key(键)

例:

obj = {name:'张三', sex:'男'};
JS方法:
方法1:
Object.hasOwnProperty.call(obj,'name'); // true
Object.hasOwnProperty.call(obj,'age'); // false

方法2:
obj.hasOwnProperty('name'); // true
obj.hasOwnProperty('age'); // false

方法3'name' in obj; // true
'age' in obj; // false

3.返回Object中所有的key(键)

例:

obj = {name:'张三', sex:'男'};
JS方法:
方法1:
Object.getOwnPropertyNames(obj); // [ 'name', 'sex' ]

方法2:
Object.keys(obj); // [ 'name', 'sex' ]

三、数组中元素为object

1. 判断数组中的Object中是否存在某个满足条件的元素

例:

arr = [
  {name:'张三', sex:'男', age:11},
  {name:'李四', sex:'男', age:22},
];
JS方法:
arr.some(item => item.name === '张三'); // true
arr.some(item => item.name === '王五'); // false

2. 判断数组中的Object中是否存在某个满足条件的元素,并返回所有满足条件的元素

例:

arr = [
  {name:'张三', sex:'男', age:11},
  {name:'李四', sex:'男', age:22},
  {name:'王五', sex:'男', age:33},
];
JS方法:
const list = arr.filter(item => item.age === 11);
console.log(list); //  [{ name: '张三', sex: '男', age: 11 },{ name: '王五', sex: '男', age: 11 }]

3. 判断数组中的Object中是否存在某个key(键)

例:

arr = [
  {name:'张三', sex:'男'},
  {name:'李四', sex:'男'},
  {name:'王五', sex:'男'},
];
JS方法:
方法1:
arr.some(item=>Object.hasOwnProperty.call(item,'name')); // true
arr.some(item=>Object.hasOwnProperty.call(item,'age')); // false

方法2:
arr.some(item=>item.hasOwnProperty('name')); // true
arr.some(item=>item.hasOwnProperty('age')); // false

方法3:
arr.some(item=>'name' in item); // true
arr.some(item=>'age' in item); // false

------------- The End -------------

许可协议: 转载请保留原文链接及作者。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐