js 操作List对象集合 常用小方法

1.对List去重,根据对象某个属性去重。
2.对Lisr排序,根据对象某个属性排序。
3.将List对象转为tree结构。
4.对List对象集合,根据id分组,相同的字段累加。
5.对List对象集合过滤。
6.向List集合中添加对象,向数组里面添加元素。
7.指定一个数字,生成对应数字长度的数组。

  1. 对List去重,根据对象某个属性去重
    示例
    在这里插入图片描述
      const list = [
      {id: 1, name: 'aa' , age: 15},
      {id: 2, name: 'bb' , age: 16},
      {id: 2, name: 'cc' , age: 17},
    ];

     arrayUnique = (arr, name) => {
	  const hash = {};
	  return arr.reduce((item, next) => {
	    hash[next[name]] ? '' : hash[next[name]] = true && item.push(next);
	    return item;
	  }, []);
	};
    list = this.arrayUnique(list, 'id');

对数组去重
在这里插入图片描述

   distinct = (a) => {
    return Array.from(new Set([...a]))
  };

const obj = [1,2,2,3,3,4,5];
    console.info('obj', obj);
    console.info('distinct', this.distinct(obj));
  1. 对Lisr排序,根据对象某个属性排序
    示例
    在这里插入图片描述
     const list = [
      {id: 1, name: 'aa' , age: 15},
      {id: 3, name: 'cc' , age: 17},
      {id: 2, name: 'bb' , age: 16},
    ];
    
 compare = (property) => {
    return function (a, b) {
      const value1 = a[property];
      const value2 = b[property];
      return value2 - value1;
    };
  }

     list = list.sort(this.compare('id'))
     倒叙:return value2 - value1;
     正序:return value1 - value2;

对数组排序(按字符而非数值排序)
在这里插入图片描述在这里插入图片描述

    let arr = [10,0,488,880,13.68];
    arr = arr.sort();
    console.info('arr', arr);

按值排序

sortRule = (a,b) => {
    return a-b;
  }

    let arr = [10,0,10,880,13.68,130,1220];
    arr = arr.sort(this.sortRule);

在这里插入图片描述
3. 将List对象转为tree结构
示例
在这里插入图片描述
在这里插入图片描述

     const list = [
      {id: 1, name: '一级' , parentId: 0},
      {id: 2, name: '二级' , parentId: 1},
      {id: 3, name: '三级' , parentId: 2},
    ];

 function buildByRecursive(nodes, rootId = 0) {
  const rootMenus = nodes.filter(m => m.parentId === rootId);
  rootMenus.forEach((node) => {
    findChild(node, nodes);
  });
  return rootMenus;
}

	findChild(node, nodes) {
	  const {id} = node;
	  const filters = nodes.filter(m => m.parentId === id);
	  if (filters.length > 0) {
	    node.children = filters;
	    filters.forEach((item) => {
	      findChild(item, nodes);
	    });
	  }
	}

  1. 对List对象集合,根据id分组,相同的字段累加
    示例
    在这里插入图片描述
   const list = [
      {id: 46, name: "aa", age: 15, startTime: '2019-08-01 00:00:00', endTime: '2019-08-01: 15:23:25'},
      {id: 46, name: "aa", age: 15, startTime: '2019-08-02 00:00:00', endTime: '2019-08-02: 15:23:25'},
      {id: 46, name: "aa", age: 15, startTime: '2019-08-03 00:00:00', endTime: '2019-08-03: 15:23:25'},
      {id: 46, name: "aa", age: 15, startTime: '2019-08-04 00:00:00', endTime: '2019-08-04: 15:23:25'},
      {id: 47, name: "bb", age: 18, startTime: '2019-08-13 00:00:00', endTime: '2019-08-13: 15:23:25'},
      {id: 47, name: "bb", age: 18, startTime: '2019-08-14 00:00:00', endTime: '2019-08-14: 15:23:25'},
    ];

   getUpdateArray = (list) => {
    const obj = _.groupBy(list, (d)=>d.id);
    for (const a in obj) {
      if (obj[a].length > 1) {
        const ar = [];
        var o = {};
        let _i = 0;
        obj[a].forEach(d=>{
            for (const item in d) {
              if (o[item] !== d[item]) {
                if (o[item]) {
                  o[item + (_i)] = d[item];
                } else {
                  o[item] = d[item];
                }
              }
            }
            _i++;
          }
        );
        obj[a] = [o];
      }
    }
    return _.concat.apply([], Object.values(obj));
  };
  1. 对List对象集合过滤,filter()函数相关。
    删除集合中id=1的对象
    在这里插入图片描述
    const list = [
      {id: 1, name: 'aa' , age: 15},
      {id: 2, name: 'bb' , age: 16},
      {id: 3, name: 'cc' , age: 17},
    ];
    const filterList = list.filter(val => val.id !== 1);

取出集合中id=1的对象
在这里插入图片描述

const filterList = list.filter(val => val.id === 1);

6.向List集合中添加对象,push()函数相关。
在这里插入图片描述

 let list = [
      {id: 1, name: 'aa' , age: 15},
      {id: 2, name: 'bb' , age: 16},
      {id: 3, name: 'cc' , age: 17},
    ];
    
    list = list.push({
      id: 4,
      name: 'dd',
      age: 18,
    });

向数组里面添加元素,concat()函数相关。
在这里插入图片描述

    const obj = ['a','b','c'];
    const obj2 = obj.concat('d');

7.指定一个数字,生成对应数字长度的数组。
示例:指定一个数字5,生成一个长度为5的数组。
在这里插入图片描述

      const LEN = 5;
      const arr = [];
      for (let i=0; i < LEN; i++) {
          arr.push(0);
      }
      console.log("arr", arr);

      const arrs = new Array(5).fill('');
      console.log("arrs", arrs);

注意:fill()此方法对浏览器有要求。
https://www.runoob.com/jsref/jsref-fill.html
在这里插入图片描述

  • 4
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Unity中的JS脚本中的集合是一种可以容纳多个数据项的对象常用集合有数组(Array),列表(List)和字典(Dictionary)。数组和列表都可以用来存储一个序列的元素,但是列表比数组更灵活,可以动态地添加和删除元素。字典则可以用来存储键值对,可以通过键来查找和访问其中的值。 在使用集合时,需要注意集合的类型和方法。可以使用类似于数组中的foreach语句遍历和操作集合中的每个元素,也可以使用集合特定的方法,如Add()、Remove()、ContainsKey()、ContainsValue()等来增加、删除、查找和修改集合中的元素。 另外,在使用集合时要注意内存的使用,避免集合的过度创建和销毁造成性能瓶颈。可以使用对象池等技术来减少内存的占用,提高程序的性能。 总之,集合在Unity中的JS脚本中是一个非常重要的概念,熟练掌握集合的使用可以为游戏开发带来更高效的解决方案,提高代码的质量和可维护性。 ### 回答2: Unity是一个非常强大的游戏开发引擎,它允许开发者使用各种编程语言编写游戏逻辑和交互。其中,JavaScriptJS)是Unity中最常用的脚本语言之一,它可以轻松地创建游戏逻辑和操作游戏对象。 在Unity JS脚本中,集合是一组相同类型的变量的容器,比如数组(Array)和列表(List)。这些集合可以存储不同类型的变量,如整数、字符串、对象等。 使用集合可以大大简化编程过程,因为它允许开发者轻松地对大量数据进行操作,并且可以根据需要随时添加或删除元素。比如,在游戏中,我们可以使用数组来存储玩家的分数,列表来存储敌人的位置等数据信息。 除了数组和列表之外,还有一些其他的集合类型,如字典(Dictionary)和队列(Queue)。字典可以存储键值对,这对于需要快速查找和获取数据的应用程序非常有用。队列可以按照先进先出(FIFO)的顺序存储元素,这对于需要控制任务或进程执行顺序的应用程序非常有用。 总之,在Unity JS脚本中,集合是一个非常重要的概念。通过使用集合,开发者可以更轻松地管理和操作数据,从而提高游戏的性能和可玩性。通过学习这些集合类型的用法和特性,开发者可以更好地掌握Unity游戏开发的技能和能力。 ### 回答3: 在unity的js脚本中,集合指的是一种数据结构,用于存储多个相同类型的元素。在js脚本中,常用集合类型包括数组(Array)和哈希表(Hashtable)。 数组是一种有序的集合类型,用于存储多个相同类型的元素。在js脚本中,数组可以通过声明和初始化来创建,也可以通过调用push()方法来将元素添加到数组中。可以使用for循环或foreach循环来遍历数组中的元素。 哈希表是一种无序的集合类型,用于存储多个键值对。在js脚本中,哈希表可以通过声明和初始化来创建,也可以通过调用Add()方法来添加键值对。可以使用foreach循环来遍历哈希表中的键值对。 在使用集合类型时,需要注意元素的类型和相应的操作方法。同时需要考虑集合的大小和效率等问题,选择合适的集合类型来存储和处理数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值