遇到数组的各种处理

1、从对象数组中找出 id 相同的对象,放到新数组(二维数组)中

  • 原链接:http://www.gkh0305.com/archives/findinfobyid

      const list = [
          {
            id: 1,
            name: "张三",
          },
          {
            id: 1,
            name: "李四",
          },
          {
            id: 2,
            name: "王麻子",
          },
        ];
        // 根据吧id相同的对象整合到一个新数组里
        const newList = [];
        list.forEach(item => {
          let flag = undefined;
          newList.some(el => {
            if (el.length > 0) {
              if (el[0].id === item.id) {
                flag = el;
                return true;
              }
            }
          });
          if (typeof flag !== "undefined") {
            flag.push(item);
          } else {
            newList.push([item]);
          }
          flag = undefined;
        });
    

2、JavaScript 中的递归:对象数组里根据 id 获取 name,对象可能有 children 属性

  • 原链接: https://www.cnblogs.com/starlog/p/15356396.html

        getFlatArr(arr) {
          return arr.reduce((a, item) => {
            let flatArr = [...a, item];
            if (item.children) {
              flatArr = [...flatArr, ...this.getFlatArr(item.children)];
            }
            return flatArr;
          }, []);
        }
        getNameByIdFromArr(arr, id) {
          return this.getFlatArr(arr).find(item => item.id === id).name;
        }
        get getName() {
          if (this.val.length === 0 || this.List.length === 0) {
            return "";
          }
          const find = this.val.map(el => {
            return this.getNameByIdFromArr(this.List, el);
          });
          return find ? find.toString() : "";
        }
            val = [1,2,3]
        List = [
          {
            id: 1,
            name: '张三',
            children: [
              {
                id: 2,
                name: '李四'
              }
            ]
          },
          {
            id: 3,
            name: '王五'
          }
        ]
    

3、字符串和数组的相互转换

1、数组转字符串

  • 1、toString 能够把每个元素转换为字符串,然后以逗号链接输出显示

      const arr = [1,2,3,4]
      const str = arr.toString(); // 1,2,3,4
    
  • 2、join 也可以把数组转成字符串,它可以指定分隔符,不指定符号默认是以逗号链接输出显示

      const arr = [1,2,3,4]
      const str = arr.join(); // 1,2,3,4
      const str = arr.join(','); // 1,2,3,4
    

2、字符串转数组

  • 1、split 可以指定某个特定的符号来分割加入到数组中

      const str = '1,2,3'
      const arr = str.split(',') // ["1","2","3"]
    
  • 2、字符串转换成数字数组

      const str = '1,2,3,4'
      const arr = str.split(',').map(Number) // [1,2,3,4]
    
  • 3、使用解构形成数组

      const str = "1234"
      const arr = [...str] // ["1","2","3","4"]
    

3、map(Number)和 map(String)

  • 1、字符串数组转数字数组

      const array = ["1","2","3"]
      const arr = array.map(Number) // [1,2,3]
    
  • 2、数字数组转字符串数组

      const array = [1,2,3]
      const arr = array.map(String) // ["1","2","3"]
    
posted @ 2022-09-30 10:07  不完美的完美  阅读(26)  评论(0编辑  收藏  举报