今天遇到一个问题。后端请求回来是[{id:'12',name:'tom'},{id:'13',name:'marry'}]。
百度的方法:
转换方法:1、利用fromEntries()和map()函数,语法“Object.fromEntries(arr.map(item => [item.key, item]))”语句;2、利用扩展运算符“...”,语法“{...arr}”。
方法1:利用fromEntries()和map()函数
const arr = [
{ key: "id", name: "编号" },
{ key: "name", name: "名称" },
];
const obj = Object.fromEntries(arr.map(item => [item.key, item]));
console.log(obj);
输出
方法2:利用扩展运算符“...”
const arr = [
{ key: "id", name: "编号" },
{ key: "name", name: "名称" },
];
const obj = {...arr} ;
console.log(obj);
我用了解构,但是他的姓氏是{0:{key:'id',name:'hhh'}},我不想要前面的0。
所以找了另外的方法:es6里面的find。
find() 方法就是根据传入的函数遍历数组中每一个元素,返回值为数组中第一个符合条件的值。
studnets:
student:
直接上代码
//根据id查询student数据,返回符合条件的id
students.find(function(item){
return item.id === student.id
})
结果: 这就是我想要的那一条数据。
注意:
- 当数组中某一个条件符合值函数条件时,find将停止执行,即一次只能查询一个数组中符合条件的元素
- 如果没有符合条件的元素返回 undefined
- find()对于空数组是不会执行的
- find()做的仅仅是查询操作,并不会改变数组的原始值