面试题答案
一键面试思路分析
- 首先,我们需要从原对象数组中提取特定属性值。
- 然后,为了保证新数组元素的唯一性,可以使用
Set
数据结构,Set
中的值具有唯一性。 - 对于大数据量,使用
Set
来处理唯一性比传统的循环判断更高效,因为Set
内部采用哈希表实现,添加元素的时间复杂度接近 O(1)。
代码实现(以 JavaScript 为例)
function createUniqueArrayFromObjectArray(objectArray, property) {
return Array.from(new Set(objectArray.map(obj => obj[property])));
}
// 示例用法
const originalArray = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 3, name: 'Alice' }
];
const newArray = createUniqueArrayFromObjectArray(originalArray, 'name');
console.log(newArray);
在上述代码中:
objectArray.map(obj => obj[property])
从原对象数组objectArray
中提取指定property
的值,形成一个新数组。new Set(...)
将这个新数组转换为Set
,自动去除重复值。Array.from(...)
再将Set
转换回数组,以满足题目要求的数组形式。
其他语言类似思路实现(以 Python 为例)
def create_unique_array_from_object_array(object_array, property):
return list(set([obj[property] for obj in object_array]))
# 示例用法
original_array = [
{'id': 1, 'name': 'Alice'},
{'id': 2, 'name': 'Bob'},
{'id': 3, 'name': 'Alice'}
]
new_array = create_unique_array_from_object_array(original_array, 'name')
print(new_array)
在 Python 代码中,通过列表推导式 [obj[property] for obj in object_array]
提取属性值,然后用 set
去除重复值,最后转换回列表。