vue中 valList=['accidentType','accidentDate'] nameList = [{name:'123',val:'还行'},{name:'123',val:'可以'}] 怎么吧valList里的值,当成nameList的key值,吧val替换掉 生成 [{name:'123',accidentType:'还行'},{name:'123',accidentDate:'可以'}] 代码实现
时间: 2023-08-16 21:07:38 浏览: 38
在 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` 并输出。