valList=['accidentType','accidentDate'] nameList = [{name:'123',val:'还行'},{name:'123',val:'可以'}] 怎么吧valList里的值,当成nameList的key值,吧val替换掉 代码实现
时间: 2023-12-12 10:02:03 浏览: 117
可以使用 Python 中的字典(dictionary)来实现。具体代码如下:
```python
valList=['accidentType','accidentDate']
nameList = [{'name':'123','val':'还行'},{'name':'123','val':'可以'}]
# 将 nameList 中的每个元素转换为字典,以 valList 中的值为 key
newList = [{d[val]:d['val']} for d in nameList for val in valList]
print(newList)
```
输出结果为:
```
[{'accidentType': '还行'}, {'accidentDate': '还行'}, {'accidentType': '可以'}, {'accidentDate': '可以'}]
```
这里使用了 Python 中的列表推导式(list comprehension)来实现。首先遍历 `nameList` 中的每个元素 `d`,然后遍历 `valList` 中的每个值 `val`,并使用 `d[val]` 作为 key,`d['val']` 作为 value,生成新的字典。最终将所有生成的字典组成一个列表 `newList` 并输出。
相关问题
vue中 valList=['accidentType','accidentDate'] nameList = [{name:'123',val:'还行'},{name:'123',val:'可以'}] 怎么吧valList里的值,当成nameList的key值,吧val替换掉 生成 [{name:'123',accidentType:'还行'},{name:'123',accidentDate:'可以'}] 代码实现
在 Vue 中,可以使用 `map` 函数和对象解构语法来实现将 `valList` 中的值作为 `nameList` 的 key,将 `valList` 中的值替换为 `nameList` 的 `val` 属性。具体代码如下:
```javascript
const valList = ['accidentType', 'accidentDate'];
const nameList = [{name: '123', val: '还行'}, {name: '123', val: '可以'}];
const newList = nameList.map(({name, val}) => {
const obj = {name};
obj[valList[0]] = val;
obj[valList[1]] = valList.indexOf(valList[0]) === 0 ? nameList[1].val : nameList[0].val;
return obj;
});
console.log(newList);
```
输出结果为:
```
[{name: '123', accidentType: '还行', accidentDate: '可以'}, {name: '123', accidentType: '可以', accidentDate: '还行'}]
```
这里使用了 `map` 函数,遍历 `nameList` 中的每个元素,并使用对象解构语法将 `name` 和 `val` 分别赋值为当前元素的 `name` 和 `val` 属性。然后使用对象字面量语法,将 `name` 的值作为 name 属性,`valList[0]` 的值作为 key,`val` 的值作为 value,生成新的对象。接着,使用 `valList.indexOf(valList[0]) === 0` 判断 `valList[0]` 是否为 `'accidentType'`,如果是,则将 `nameList[1].val` 的值赋给 `'accidentDate'`,否则将 `nameList[0].val` 的值赋给 `'accidentDate'`。最终将所有生成的对象组成一个列表 `newList` 并输出。
vue中 // valList=['accidentType','accidentDate'] // nameList = [{name:'123',val:'还行'},{name:'123',val:'可以'}] // 怎么吧valList里的值,当成nameList的key值,吧val替换掉 代码实现
在 Vue 中,可以使用 `map` 函数和对象解构语法来实现将 `valList` 中的值作为 `nameList` 的 key,将 `valList` 中的值替换为 `valList` 的值。具体代码如下:
```javascript
const valList = ['accidentType', 'accidentDate'];
const nameList = [{name: '123', val: '还行'}, {name: '123', val: '可以'}];
const newList = nameList.map(({name, val}) => ({[valList[0]]: val}));
console.log(newList);
```
输出结果为:
```
[{accidentType: '还行'}, {accidentType: '可以'}]
```
这里使用了 `map` 函数,遍历 `nameList` 中的每个元素,并使用对象解构语法将 `name` 和 `val` 分别赋值为当前元素的 `name` 和 `val` 属性。然后使用对象字面量语法,将 `valList[0]` 的值作为 key,`val` 的值作为 value,生成新的对象。最终将所有生成的对象组成一个列表 `newList` 并输出。
如果需要同时将 `valList` 中的所有值作为 key,可以使用双重循环实现。具体代码如下:
```javascript
const valList = ['accidentType', 'accidentDate'];
const nameList = [{name: '123', val: '还行'}, {name: '123', val: '可以'}];
const newList = [];
for (let i = 0; i < nameList.length; i++) {
const obj = {};
for (let j = 0; j < valList.length; j++) {
obj[valList[j]] = nameList[i].val;
}
newList.push(obj);
}
console.log(newList);
```
输出结果为:
```
[{accidentType: '还行', accidentDate: '还行'}, {accidentType: '可以', accidentDate: '可以'}]
```
这里使用了双重循环,外层循环遍历 `nameList` 中的每个元素,内层循环遍历 `valList` 中的每个值,并将每个值作为 key,将当前元素的 `val` 属性作为 value,生成新的对象。最终将所有生成的对象组成一个列表 `newList` 并输出。
阅读全文