1:如何把'红蓝蓝黄红黄蓝红红黄红' 转为 ['黄','红','蓝']markdown
const str = '红蓝蓝黄红黄蓝红红黄红'
const arr = str.split('')
const obj = {'黄': 0, '红':1 ,'蓝': 2}
arr.sort((x,y)=> obj[x] - obj[y])
console.log(Array.from(new Set(arr)))
复制代码
2: 把[{id:'1', name:'红'},{id:'2', name:'绿'},{id:'3', name:'蓝'}] 转为 {id: "1|2|3",name: "红|绿|蓝"}spa
const a = [{id:'1', name:'红'},{id:'2', name:'绿'},{id:'3', name:'蓝'}]
const b = a.reduce((result,item) =>{
result.id = result.id ? `${result.id}|${item.id}`: item.id
result.name = result.name ? `${result.name},${item.name}`: item.name
return result
},{})
console.log(b)
复制代码
3: 去掉[{id:1,name:'xc'},{id:2,name:'ff'}]中id为2的对象3d
const a = [{id:1,name:'xc'},{id:2,name:'ff'}]
const b = [...new Set(a.filter(item => item.id !== 2))]
console.log(b)
复制代码
4: 实现groupBy方法code
const a = groupBy([
{id: 1, name: '马大大', sex: 'male'},
{id: 2, name: '冯橙橙', sex: 'female'},
{id: 1, name: '冯大胖', sex: 'male'}
], x => x.sex)
function groupBy(collection, by) {
return collection.reduce((acc, x) => {
if (acc[by(x)]) {
acc[by(x)].push(x)
} else {
acc[by(x)] = [x]
}
return acc
}, {})
}
console.log(a)
复制代码
5: 转为树形格式数据orm
function ArrayToTree(list) {
const map = new Map()
list.forEach(item => {
if (!map.has(item.pid)) {
map.set(item.pid, [])
}
map.get(item.pid).push(item)
})
function recursive(pid) {
return map.get(pid).map(item => {
if (map.has(item.id)) {
item.children = recursive(item.id)
}
return item
})
}
return recursive(0)
}
const a = [ { id: 1, pid: 0 }, { id: 2, pid: 0 },{ id: 3, pid: 1 },{ id: 4, pid: 1 }, { id: 5, pid: 2 }, { id: 6, pid: 2 }]
const data = ArrayToTree(a)
console.log(...data)
复制代码
6: 去重输出['a.b','c','d.e']对象
const array = ['a.b','a.b.c','c.d.e']
const set = new Set()
const b = array.map(item =>{
const jj = []
const items = item.split('.')
items.forEach(i => {
if(!set.has(i)){
set.add(i)
jj.push(i)
}
})
return jj.join('.')
})
console.log(b);
复制代码
7.输出 [200, 140, null, null, 400, null, null, null, null, null, null, null]get
const obj = {1:200,2: 140,5: 400}
function translate(obj){
return Array.from({length: 12}).map((_,index) => obj[index+1] || null)
}
console.log(translate(obj))
复制代码