vue中 // valList=['accidentType','accidentDate'] // nameList = [{name:'123',val:'还行'},{name:'123',val:'可以'}] // 怎么吧valList里的值,当成nameList的key值,吧val替换掉 代码实现
时间: 2023-12-18 14:02:44 浏览: 70
在 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` 并输出。
阅读全文