相互转换 obj -> arr arr -> obj
例1
var arr = [ { date: "2018-01-10", time: "11:00" }, { date: "2018-01-10", time: "12:00" }, { date: "2018-11-27", time: "1:00、2:00", }, { date: "2018-11-27", time: "3:00、4:00" }, { date: "2018-01-10", time: "5:00" } ];
// 输出 [ { date: "2018-11-27", time: "1:00、2:00、3:00、4:00" }, { date: "2018-01-10", time: "5:00" } ]
----------------------------------------------------------------------------------------------------------
// 用一行代码搞定
var res = Array.from(arr.reduce((pre, cur) => pre.set(cur['date'], [...(pre.get(cur['date'])|| []), cur.time]), new Map))
.map(([date, arr]) => ({date, time: arr.join('、')}))
var res = arr.reduce((pre, cur)=> { let i = pre.findIndex(v=> v.date===cur.date) if(i>-1){ pre[i].time = [pre[i].time, cur.time].join('、') }else{ pre.push(cur) } return pre }, []) console.log(res)
// 同理 var arr = [{a:1, b:2}, {a:1, c:3}, {a:4, d:5}]
// 得到 [{a:1, b:2, c:3}, {a:4, d:5}]
var res = arr.reduce((pre, cur) => {
let i = pre.findIndex(v => v.a = cur.a)
if (i > -1) {
pre[i].c = cur.c
} else pre.push(cur)
return pre
}, [])
------------------------------------------------------------------------------------------------------------
var arr =[{a:1,b:2,c:2},{a:1,b:2,c:3},{a:2,b:3,c:2},{a:2,b:3,c:2},{a:1,b:4,c:2}];
// 得到 [{a: 1, b: 2, c: 5}, {a: 2, b: 3, c: 4}, {a: 1, b: 4, c: 2}]
var res = arr.reduce((pre, cur)=>{
let i = pre.findIndex(v=> v.a === cur.a && v.b === cur.b)
i > -1 ? pre[i].c = cur.c + pre[i].c : pre.push(cur)
return pre
}, [])
console.log(res)
—————————————————————————————————————-
两个数组比较,拿出相同数据跟不同数据
var arr1 = [“1”, “2”, “3”, “5”]
var arr2 = [{id: “1”},{id: “2”},{id: “3”},{id: “4”}]
var map = new Map(arr2.map(v=> [v.id, v]))
var [res1, res2] = arr1.reduce(([res1, res2], cur)=>{
map.has(cur) ? res1.push(map.get(cur)) : res2.push(cur)
return [res1, res2]
}, [[], []])
console.log(res1, res2)
———————————————————–
var a = [{ name: “May”, age: 12, id: 1 }, { name: “Jone”, age: 13, id: 5 }, { name: “May”, age: 15, id: 6 }]
// 整成
var res = [
{
name: ‘May’,
list: [{name: ‘May’, age: 12, id: 1},{name: ‘May’, age: 15, id: 6}]
},
{
name: ‘Jone’,
list: [{name: ‘Jone’, age: 13, id: 5}]
}
]
var res = Array.from(a.reduce((pre, cur)=> pre.set(cur.name, […(pre.get(cur.name)||[]), cur]), new Map)).map(([name, list])=>({name, list}))
console.log(res)
例3 统计数组中相同项出现的个数
例4 数组的降维 (多维嵌套数组转化为单个数组)
如 [11, 20, 30, [17, 18, [9, 8, [1, 2, 3]]]] 输出 [11, 20, 30, 17, 18, 9, 8, 1, 2, 3]
例5 数组(对象)去重 + 多数组的合并去重
例6 代码正常运行
例7 项目中遇到的数据结构
例8 一段很溜的代码
例9
例10
例子11
js随机一个8位数
例子12
var arry = [“股票开户”, “期贷开户”, “基金定股”, “我的股东户”, “服务中心”, “私人顾问”, “股票分析”, “华泰证券”, “股票行情”]
var arry1 = [“股票开户”, “期贷开户”, “基金定股”, “我的股东户”, “服务中心”, “股票分析”, “股票行情”]
例子13
js扁平化json对象
例子14
找出两个数组当中不同的值
例子15
例子16
取 -20~-10 和 10~20 这两个范围的随机数
例子17