js 对象List 转Map 用lamda表达式实现
时间: 2024-05-08 17:17:49 浏览: 14
JavaScript中没有Map对象,但是可以用对象字面量来实现类似于Map的功能。
使用lambda表达式可以将一个对象列表转换为一个对象字面量,其中对象的属性将作为对象字面量的键,对象的值将作为对象字面量的值。
下面是一个示例代码:
```javascript
const list = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 3, name: 'Charlie' }
];
const map = list.reduce((acc, obj) => {
acc[obj.id] = obj.name;
return acc;
}, {});
console.log(map); // { 1: 'Alice', 2: 'Bob', 3: 'Charlie' }
```
在上面的代码中,reduce函数用于将对象列表转换为一个对象字面量。初始值为一个空对象{},reduce函数的回调函数将每个对象的id作为键,将每个对象的name作为值,添加到累加器对象中。最终得到一个包含所有对象的id和name的对象字面量。
相关问题
list 转成 map lamda
将list转成map lambda可以使用以下方式实现:
假设有一个包含元素的list,我们可以使用lambda表达式和map函数来将这个list转换成一个map。
首先,我们定义一个list,假设为[1, 2, 3, 4, 5]。
然后,我们可以使用lambda表达式来定义一个函数,这个函数接收一个参数x,并返回一个元组,元组包含x作为键和x的平方作为值。lambda表达式如下:
```python
func = lambda x: (x, x**2)
```
接下来,我们使用map函数将list中的每个元素应用到这个lambda表达式上,得到一个包含元组的list。代码如下:
```python
lst = [1, 2, 3, 4, 5]
result = list(map(func, lst))
```
最后,我们可以将得到的结果转换成一个map,代码如下:
```python
map_result = dict(result)
```
这样,list就成功转换成一个map了。map_result的结果为{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}。
通过lambda表达式和map函数的组合,我们可以很方便地将list转换成map。
lamda表达式 对 List<Map<String, Object>> 取值并创建新的list
使用 Lambda 表达式对 List<Map<String, Object>> 中所有 Map 对象中 key 为 "lambda" 的 value 值进行提取,并且将这些 value 值放入新的 List 中,可以使用如下代码实现:
```java
List<Map<String, Object>> originalList = ... // 原始 List
List<Object> lambdaValues = originalList.stream()
.map(map -> map.get("lambda"))
.filter(Objects::nonNull)
.collect(Collectors.toList());
```
这里使用了 Java 8 中的 Stream API,首先通过 stream() 方法将原始 List 转换为一个 Stream,然后使用 map() 方法将每一个 Map 对象中 key 为 "lambda" 的 value 值提取出来,再通过 filter() 方法过滤掉 null 值,最后使用 collect() 方法将所有非 null 的 lambda 值收集到一个新的 List 中。最终得到的 lambdaValues 就是所有 Map 对象中 key 为 "lambda" 的 value 值组成的 List。