这是给我自己看的

 

 去重

Set实例的方法分为两大类:操作方法(用于操作数据)和遍历方法(用于遍历成员),操作方法有:add(value)、delete(value)、has(value)、clear();遍历方法有:keys()、values()、entries()、forEach()
1、ES6——new Set方法

const myArray = [1,1,2,2,3,3,4,4,5,5] console.log([...new Set(myArray )]);// [1, 2, 3, 4, 5] 

2、Array.from(该方法可以将 Set 结构转为数组)

function dedupe(array) { return Array.from(new Set(array)); } dedupe([1, 1, 2, 3]) // [1, 2, 3]




let aa = { a: 1, b: 2, c: 3 };
let dd = { d: 4, c: 5, b: 6 };
console.log({ ...aa, ...dd });
let cc = [1, 2, 3, 4];
let bb = [2, 5, 1, 6, 7];
console.log([...cc, ...bb]);
let ccc = [{ a: 1 }, { b: 2 }, { c: 3 }, { d: 4 }];
let bbb = [{ a: 2 }, { b: 5 }, { c: 1 }, { d: 6 }, { f: 7 }];
console.log([...ccc, ...bbb]);


includes() 方法用来判断一个数组是否包含一个指定的值,如果是返回 true,否则false。

[1, 2, 3].includes(2); // true
[1, 2, 3].includes(4); // false
[1, 2, 3].includes(3, 3); // false
[1, 2, 3].includes(3, -1); // true
[1, 2, NaN].includes(NaN); // true


reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。


findIndex() 方法返回传入一个测试条件(函数)符合条件的数组第一个元素位置。

findIndex() 方法为数组中的每个元素都调用一次函数执行:

当数组中的元素在测试条件时返回 true 时, findIndex() 返回符合条件的元素的索引位置,之后的值不会再调用执行函数。
如果没有符合条件的元素返回 -1


Array.isArray() 用于确定传递的值是否是一个 Array。


Array.isArray([1, 2, 3]);
// true
Array.isArray({foo: 123});
// false
Array.isArray("foobar");
// false
Array.isArray(undefined);
// false

 

Array.from() 方法从一个类似数组或可迭代对象中创建一个新的,浅拷贝的数组实例。

console.log(Array.from('foo'));
// expected output: Array ["f", "o", "o"]

console.log(Array.from([1, 2, 3], x => x + x));
// expected output: Array [2, 4, 6]

 

对象内容合并
Object.keys() - 获得对象中所有的键名,以数组的形式返回
var obj = { a:1,b:2 };
var names = Object.keys(obj);//['a', 'b']
-----------------------------------
Object.values() - 获得对象中所有的值内容,以数组的形式返回
var obj = { a:1,b:2 };
var values = Object.values(obj);//[1, 2]
-----------------------------------
Object.entries() - 获得对象中所有的成员数据,以数组的形式返回,成员的内容也是数组形式
var obj = { a:1,b:2 };
var values = Object.entries(obj);//[['a',1], ['b',2]]

 

let result = [
  {
      "campaignId" : 1640113690688517,
      "campaignName" : "AND-TW-TTH",
      "status" : "CAMPAIGN_STATUS_DISABLE",
      "adgroups" : [ {
        "advertiserId" : 1639377170863109,
        "adgroupId" : 1640113691245574,
        "adgroupName" : "3001-AND-TW-1354-M/F-Broad-o4-190726-TTH-Tiktok",
        "campaignId" : 1640113690688517,
        "campaignName" : "AND-TW-TTH",
        "totalBudget" : null,
        "dailyBudget" : 5000,
        "scheduleStartTime" : "2019-07-26 09:35:32",
        "scheduleEndTime" : "2020-07-26 09:35:32",
        "pacing" : "PACING_MODE_SMOOTH",
        "billingEvent" : "CPA",
        "bidType" : null,
        "bid" : 0}]
      },
    {
      "campaignId" : 1640113690688518,
      "campaignName" : "AND-TW-TTH",
      "status" : "CAMPAIGN_STATUS_DISABLE",
      "adgroups" : [ {
        "advertiserId" : 1639377170863109,
        "adgroupId" : 1640113691245578,
        "adgroupName" : "3001-AND-TW-1354-M/F-Broad-o4-190726-TTH-Tiktok",
        "campaignId" : 1640113690688517,
        "campaignName" : "AND-TW-TTH",
        "totalBudget" : null,
        "dailyBudget" : 5000,
        "scheduleStartTime" : "2019-07-26 09:35:32",
        "scheduleEndTime" : "2020-07-26 09:35:32",
        "pacing" : "PACING_MODE_SMOOTH",
        "billingEvent" : "CPA",
        "bidType" : null,
        "bid" : 0 }]
      },
    ]

// map 版本
const forMatterResultMap = (data) => {
 return data.map(({ campaignId, campaignName, adgroups = [] }) => {
   let adgroupsFormatter = adgroups.map (({ adgroupId, adgroupName }) => {
     return {
      adgroupId,
      adgroupName
     }
   })
    return {
      campaignId,
      campaignName,
      adgroups: adgroupsFormatter
    }
  })
}

// reduce 版本
const forMatterResultReduce = (data) => {
  return data.reduce((acc, { campaignId, campaignName, adgroups = [] }) => {
    let adgroupsFormatter = adgroups.reduce((acc, { adgroupId, adgroupName }) => {
      return acc.concat({
        adgroupId,
        adgroupName
      })
    }, [])
    return acc.concat({
        campaignId,
        campaignName,
        adgroups: adgroupsFormatter
    })
  }, [])
 }


// 递归
const forMatterRec = (type, data) => {
  return data.reduce((acc, crr) => {
    let obj = {
      [`${type}Id`]: crr[`${type}Id`],
      [`${type}Name`]: crr[`${type}Name`],
    }
    if (crr.adgroups) {
      obj.adgroups = forMatterRec('adgroup', crr.adgroups)
    }
    return acc.concat(obj)
  }, [])
 }

forMatterResultReduce(result)
forMatterResultMap(result)
forMatterRec('campaign', result)

 

 

 

你可能感兴趣的:(这是给我自己看的)