首页 > 其他分享 >2023.02.28 - 数组扁平化处理||同结构嵌套数组对象中删除某个键值

2023.02.28 - 数组扁平化处理||同结构嵌套数组对象中删除某个键值

时间:2023-02-28 14:33:30浏览次数:50  
标签:arr prev return childrens 2023.02 next 键值 数组 null

根据childrens字段递归扁平化数组(保留父元素)

// 方法一:根据childrens字段递归扁平化数组(保留父元素)
function flatten1(arr) {
  "use strict";
  if(!arr) return [];
  return arr.reduce((prev, next) => {
    prev.push(next);
    return prev.concat(flatten1(next.childrens));
  }, []);
};
// 方法二:根据childrens字段递归扁平化数组(保留父元素)
function flatten2(arr) {
  "use strict";
  return arr.reduce((prev, next) => {
    const hasChildren = Array.isArray(next.childrens);
    if(hasChildren) prev.push(next);
    return prev.concat(hasChildren ? flatten2(next.childrens) : next);
  }, []);
};

在无穷迭代的同结构数组项中移除某个键值

deleteNestedItem(arr) {
  "use strict";
  if(!Array.isArray(arr)) return arr;
  arr.reduce((prev, next) => {
    // 嵌套字段
    next.childrens = this.deleteNestedItem(next.childrens);
    // 删除的值
    delete next.parent;
    return prev.concat(next);
  }, []);
  return arr;
}

测试数据

const arrStr ='[{"id":"6bb727ef9f32406280cb0caedbea510a","ctime":null,"utime":null,"status":1,"orders":1,"childrens":[{"id":"277b82a97da641389b20096d8cb33faf","ctime":null,"utime":null,"status":1,"orders":1,"childrens":null,"pid":"6bb727ef9f32406280cb0caedbea510a","pids":"02c092b1c2964aebab133e6624d3f7bb,6bb727ef9f32406280cb0caedbea510a,","value":"344","label":"中国香港特别行政区","type":"国家和地区","description":null,"appId":"e494197ac24c4480b78cb66fc97accc6"},{"id":"ec1268400310481e984ede25511e0d84","ctime":null,"utime":null,"status":1,"orders":1,"childrens":null,"pid":"6bb727ef9f32406280cb0caedbea510a","pids":"02c092b1c2964aebab133e6624d3f7bb,6bb727ef9f32406280cb0caedbea510a,","value":"446","label":"中国澳门特别行政区","type":"国家和地区","description":null,"appId":"e494197ac24c4480b78cb66fc97accc6"},{"id":"0cb0faf6df0849e3802f19cf31c690e3","ctime":null,"utime":null,"status":1,"orders":1,"childrens":null,"pid":"6bb727ef9f32406280cb0caedbea510a","pids":"02c092b1c2964aebab133e6624d3f7bb,6bb727ef9f32406280cb0caedbea510a,","value":"158","label":"中国台湾","type":"国家和地区","description":null,"appId":"e494197ac24c4480b78cb66fc97accc6"}],"pid":"02c092b1c2964aebab133e6624d3f7bb","pids":"02c092b1c2964aebab133e6624d3f7bb,","value":"156","label":"中华人民共和国","type":"国家和地区","description":null,"appId":"e494197ac24c4480b78cb66fc97accc6"},{"id":"d799dd070a764d7fbb4e612aa10cf41d","ctime":null,"utime":null,"status":1,"orders":1,"childrens":null,"pid":"02c092b1c2964aebab133e6624d3f7bb","pids":"02c092b1c2964aebab133e6624d3f7bb,","value":"100","label":"亚洲","type":"国家和地区","description":null,"appId":"e494197ac24c4480b78cb66fc97accc6"}]';

forof不能遍历对象

for of适用遍历数/数组对象/字符串/map/set等拥有迭代器对象(iterator)的集合,但是不能遍历对象,因为没有迭代器对象,但如果想遍历对象的属性,你可以用for in循环(这也是它的本职工作)或用内建的Object.keys()方法

标签:arr,prev,return,childrens,2023.02,next,键值,数组,null
From: https://www.cnblogs.com/yehuda/p/17164155.html

相关文章