js处理想要得到数据结构

相互转换 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

 

免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。

为您推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注