飞猪旅行前端实习笔试
- 现在有一个数组,内有object,如下
const arr = [
{ value: 532, lable: 1, type: "a" },
{ value: 132, lable: 24, type: "b" },
{ value: 432, lable: 13, type: "b" },
{ value: 1812, lable: 5, type: "b" },
{ value: 1932, lable: 8, type: "c" },
{ value: 132, lable: 4, type: "a" },
{ value: 2462, lable: 9, type: "a" },
];
按 type 将如上结构数据归类到一个对象结构中,并给每个type内的数据,按 value 值 大小,正序排序
如上面的数组将输出如下结果:
(注意:type值的数量不固定,实现方法请考虑通用性)
{
a: [
{ value: 132, lable: 4, type: 'a'},
{ value: 532, lable: 1, type: 'a'},
{ value: 2462, lable: 9, type: 'a'},
],
b: [
{ value: 132, lable: 24, type: 'b'},
{ value: 432, lable: 13, type: 'b'},
{ value: 1812, lable: 5, type: 'b'},
]
c: [
{ value: 1932, lable: 8, type: 'c'}
]
}
function dealArr(arr) { const res = {}; for (let obj of arr) { if (!res[obj["type"]]) { res[obj["type"]] = [obj]; } else { res[obj["type"]].push(obj); } } for (let key in res) { res[key].sort((a, b) => a.value - b.value); } return res; }
- 题目
编写一个 JavaScript 函数 getSearchParams()
它的用途是把一个url query字符串解析为一个对象,如果某个值是一个json,也需要把它解析为一个对象function getSearchParams(url) { const arr = url.split("?")[1].split("&"); const res = {}; for (let item of arr) { let help = item.split("="); const [key, val] = help; let temp = decodeURI(val).replace(/%3A/g, ":").replace(/%2C/, ","); try { temp = JSON.parse(temp); } catch (e) {} res[key] = temp; } return JSON.stringify(res); }