js-challenges
js-challenges copied to clipboard
['zm', 'za', 'b', 'lm', 'ln', 'k']
为啥这题没有题目描述,漏掉了吗😂
实现一个函数, 把一个字符串数组([‘zm’, ‘za’, ‘b’, ‘lm’, ‘ln’, ‘k’]) 格式化成一个对象 { ‘b’: [‘b’], ‘k’: [‘k’], ‘l’: [‘lm’, ‘ln’], ‘z’: [‘za’, ‘zm’] }
const arr = ['zm', 'za', 'b', 'lm', 'ln', 'k']
function parse(arr){
let obj = {}
arr.forEach(item => {
let key = item.slice(0,1)
obj[key] = [];
});
for(let str of arr){
for(let index in obj){
if(str.slice(0,1) == index){
obj[index].push(str);
}
}
}
return obj;
}
console.log(parse(arr))
// 实现一个函数,
// 把一个字符串数组([‘zm’, ‘za’, ‘b’, ‘lm’, ‘ln’, ‘k’]) 格式化成一个对象
// { ‘b’: [‘b’], ‘k’: [‘k’], ‘l’: [‘lm’, ‘ln’], ‘z’: [‘za’, ‘zm’] }
function toObj(arr) {
let map = new Map();
for (const str of arr) {
let char = str[0];
if (map.has(char)) {
let temp = map.get(char);
temp.push(str);
map.set(char, temp);
} else map.set(char, [str]);
}
let res = {};
map.forEach((val, key) => {
res[key] = val;
});
// console.log(res);
return res
}
let arr = ["zm", "za", "b", "lm", "ln", "k"];
console.log(toObj(arr));
function format(arr){
const res = {};
for(let item of arr){
const char = item.slice(0, 1);
!res[char] ? (res[char] = [item]) : (res[char].push(item));
}
return res;
}
function formatArrayToObject(arr) {
var result = {};
for (var i = 0; i < arr.length; i++) {
var firstLetter = arr[i][0]; // 获取字符串的第一个字符
if (!result[firstLetter]) {
result[firstLetter] = []; // 如果结果对象中还没有这个字符作为属性,则添加它,并初始化为空数组
}
result[firstLetter].push(arr[i]); // 将当前字符串添加到对应的数组中
}
// 对每个键值对应的数组进行排序
for(var key in result){
result[key].sort();
}
return result;
}
console.log(formatArrayToObject(['zm', 'za', 'b', 'lm', 'ln', 'k'])); // { ‘b’: [‘b’], ‘k’: [‘k’], ‘l’: [‘lm’, ‘ln’], ‘z’: [‘za’, ‘zm’] }
function toObj(arr) {
let obj = {};
arr.forEach(item => {
let letter = item.charAt(0);
obj[letter] = obj[letter] !== undefined ? [...obj[letter], item] : [item];
})
return obj;
}
function format(arr) {
return arr.reduce((a, b) => {
let s = b[0]
if (a[s]) {
a[s].push(b)
} else {
a[s] = [b]
}
return a
}, {})
}