📌  相关文章
📜  https:stackoverflow.com 问题 27420014 how-to-filter-json-object (1)

📅  最后修改于: 2023-12-03 14:42:01.184000             🧑  作者: Mango

如何过滤JSON对象?

在程序开发中,经常需要使用JSON数据格式来交换数据,而过滤JSON对象则是一个非常基础且常用的操作。本文将介绍JSON对象的过滤方法,并给出代码示例。

如何过滤JSON对象?

过滤JSON对象的方法有很多种,如过滤键值对、数组元素、嵌套对象等等。下面分别介绍这些方法。

过滤键值对

1. 使用for-in循环和hasOwnProperty方法

使用for-in循环可以遍历JSON对象的所有属性,用hasOwnProperty方法可以判断对象是否有该属性。根据判断结果来进行过滤操作。

let obj = {
  name: 'Tom',
  age: 18,
  sex: 'male'
};

for (let prop in obj) {
  if (obj.hasOwnProperty(prop) && prop !== 'age') {
    console.log(prop, obj[prop]);
  }
}

2. 使用Object.keys方法

使用Object.keys方法可以获取JSON对象中所有的键,然后使用filter方法进行过滤操作。

let obj = {
  name: 'Tom',
  age: 18,
  sex: 'male'
};

let filteredObj = Object.keys(obj)
  .filter(key => key !== 'age')
  .reduce((res, key) => Object.assign(res, { [key]: obj[key] }), {});

console.log(filteredObj);
过滤数组元素

1. 使用filter和map方法

使用filter方法可以过滤数组元素,使用map方法可以对过滤后的数组进行进一步处理,例如只取其中的某个属性。

let arr = [
  { name: 'Tom', age: 18 },
  { name: 'Jerry', age: 20 },
  { name: 'John', age: 22 }
];

let filteredArr = arr
  .filter(item => item.age < 22)
  .map(item => item.name);

console.log(filteredArr);

2. 使用forEach方法

使用forEach方法也可以遍历数组元素,然后根据某些条件进行过滤操作。

let arr = [
  { name: 'Tom', age: 18 },
  { name: 'Jerry', age: 20 },
  { name: 'John', age: 22 }
];

let filteredArr = [];

arr.forEach(item => {
  if (item.age < 22) {
    filteredArr.push(item.name);
  }
});

console.log(filteredArr);
过滤嵌套对象

嵌套对象中的过滤和上述方法类似,只需要套用对应的方法即可。

let obj = {
  name: 'Tom',
  age: 18,
  info: {
    tel: '123456',
    email: 'tom@email.com'
  }
};

let filteredObj = {
  name: obj.name,
  info: {
    tel: obj.info.tel
  }
};

console.log(filteredObj);
结语

以上是过滤JSON对象的几种方法,各位程序员可以根据具体的情况选择合适的方法。希望本文能够对你有所帮助。