JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JSON数组是由多个JSON对象组成的有序集合。
假设我们有以下JSON数组:
[
{"name": "Alice", "age": 30},
{"name": "Bob", "age": 25},
{"name": "Charlie", "age": 35}
]
const jsonArray = [
{ name: "Alice", age: 30 },
{ name: "Bob", age: 25 },
{ name: "Charlie", age: 35 }
];
function searchByName(name) {
return jsonArray.find(item => item.name === name);
}
console.log(searchByName("Bob")); // 输出: { name: 'Bob', age: 25 }
import json
json_array = json.loads('''
[
{"name": "Alice", "age": 30},
{"name": "Bob", "age": 25},
{"name": "Charlie", "age": 35}
]
''')
def search_by_name(name):
for item in json_array:
if item['name'] == name:
return item
return None
print(search_by_name("Bob")) # 输出: {'name': 'Bob', 'age': 25}
原因:随着数组规模的增大,线性搜索的时间复杂度会变得很高。
解决方法:
from collections import defaultdict
# 构建索引
index = defaultdict(list)
for idx, item in enumerate(json_array):
index[item['name']].append(idx)
def search_by_name_with_index(name):
if name in index:
return [json_array[idx] for idx in index[name]]
return []
print(search_by_name_with_index("Bob")) # 输出: [{'name': 'Bob', 'age': 25}]
通过这些方法,可以有效提高在大规模JSON数组中的搜索效率。
领取专属 10元无门槛券
手把手带您无忧上云