(1)依据数组对象中某个值,将相同的对象合并成一个新对象

数据源是这样的

beforeData: [{ name: "tony", id: "1", age: "20" },{ name: "jack", id: "2", age: "21" },{ name: "tony", id: "3", age: "50" },{ name: "jack", id: "4", age: "10" },{ name: "mark", id: "5", age: "22" },{ name: "mark", id: "6", age: "40" }]

要将数据中name相同的项合并成一个对象

afterData: [{name: "tony",origin: [{ name: "tony", id: "1", age: "20" },{ name: "tony", id: "3", age: "50" }]},{name: "jack",origin: [{ name: "jack", id: "2", age: "21" },{ name: "jack", id: "4", age: "10" }]},{name: "mark",origin: [{ name: "mark", id: "5", age: "22" },{ name: "mark", id: "6", age: "40" }]}]

实现:

let tempArr = [];for (let i = 0; i < this.beforeData.length; i++) {if (tempArr.indexOf(this.beforeData[i].name) === -1) {this.afterData.push({name: this.beforeData[i].name,origin: [this.beforeData[i]]});tempArr.push(this.beforeData[i].name);} else {for (let j = 0; j < this.afterData.length; j++) {if (this.afterData[j].name == this.beforeData[i].name) {this.afterData[j].origin.push(this.beforeData[i]);break;}}}}

(2)根据数组中对象的某一个属性值进行排序

如下代码,根据数组对象中的age进行排序

方式一:

var arr = [{name:'zopp',age:0},{name:'gpp',age:18},{name:'yjj',age:8}
];function compare(property){return function(a,b){var value1 = a[property];var value2 = b[property];return value1 - value2;}
}
console.log(arr.sort(compare('age')))

方式二:

students:[{name:'baibai',age:32},{name:'xiaobai',age:30},{name:'gufan',age:21},{name:'King',age:45}
]//数组对象方法排序:
function sortByKey(array, key) {return array.sort(function(a, b) {var x = a[key];var y = b[key];return ((x < y) ? -1 : ((x > y) ? 1 : 0));})
}//将相应的数组对象传入即可完成排序:
sortByKey(students,age);

(3)数组的值大小排序

如下代码,将数组中的值进行大小排序

let values = [1,2,3,6,4,8];
//小到大排序,如果需要由大到小,把返回的-1和1反过来就可以了
let compare = (x,y) => {if(x < y){return -1}else if(x > y){return 1;}else{return 0;}
}
console.log(values.sort(compare)); //[1, 2, 3, 4, 6, 8]

(4)数组中相同元素组合成一个新的数组

现在有一个这样规律的数组,需求是把里面相同元素组合成一个新的数组;

arr=['1','1','1','2',,'3','4','5','5','6','6','7','8','9','9','10']

结果是这样的

newArr = [ [ "1" , "1" , "1" ] , [ "2" ] , [] , [ "3" ] , [ "4" ] , [ "5" , "5" ] , [ "6" , "6" ] , [ "7" ] , [ "8" ] , [ "9" , "9" ] , [ "10" ] ]

实现方式:

var arr=['1','1','1','2',,'3','4','5','5','6','6','7', '8','9','9','10'];var newArr = [],tempArr = [];for(var i=0,j=arr.length;i<j;i++){if(arr[i] == arr[i+1]){tempArr.push(arr[i]);} else {tempArr.push(arr[i]);newArr.push(tempArr.slice(0));tempArr.length = 0;}}console.log(newArr);/*[ [ "1" , "1" , "1" ] , [ "2" ] , [] , [ "3" ] , [ "4" ] ,[ "5" , "5" ] , [ "6" , "6" ] ,  [ "7" ] , [ "8" ] , [ "9" , "9" ] , [ "10" ] ]*/

数组对象常用处理方案(算法思路)相关推荐

  1. 常用的排序算法思路及代码

    原文地址:那些年,让我面试头大的几个排序算法,今天终于搞懂了! 最近带广告的博客总是被封,于是copy一下备份,如有侵权,还请告知,必定删除! 快速排序 介绍: 快速排序(Quicksort)是对冒泡 ...

  2. 算法总结---最常用的五大算法(算法题思路)

    算法总结---最常用的五大算法(算法题思路) 一.总结 一句话总结: [明确所求:dijkstra是求点到点的距离,辅助数组就是源点到目标点的数组] [最简实例分析:比如思考dijkstra:假设先只 ...

  3. C++(8)--数组及常用算法

    数组及常用算法 1.数组基本概念 2.一维数组 2.1数组的定义 2.2数组初始化 2.3一维数组动态赋初值 2.4一维数组应用实例 2.5一维数组的排序算法 2.6 一维数组元素的删除和插入 arr ...

  4. javascript数组——新建数组、访问数组、遍历数组的方法、数组对象的方法、冒泡排序算法、json的正反序列化

    目录 数组 通过构造函数的三种方法 字面量创建数组方式 访问数组 遍历数组的方法 遍历:遍历就是把数组中的元素从头到尾都访问一次 操作数组对象的方法 删除和添加 delete与Vue.delete区别 ...

  5. JavaScript 常用内置对象(字符串属性、Math对象、Array数组对象)

    1.字符串属性 <script> var test_var = "I Iove you"; console.log(test_var.charAt(3)) //char ...

  6. JavaScript学习(六十六)—字符串对象常用的属性和方法总结以及数组元素的排序问题

    JavaScript学习(六十六)-字符串对象常用的属性和方法总结以及数组元素的排序问题 学习内容 一.数组去重问题 二.二维数组的定义 三.二维数组的元素操作 四.二维数组的遍历 五.关联数组 六. ...

  7. JavaScript基础(四)对象、数组、对象与数组的常用API

    目录 一.对象 1. 对象的创建 2. 对象属性的访问 3. 遍历对象属性 4. 检测属性是否存在 5. 对象的方法 二.数组对象 1. 数组的创建 2. 访问数组 3. 数组长度 4. 数组的遍历 ...

  8. 简单java数组程序_java(数组及常用简单算法 )

    数组 数组:数组是存储同一种数据类型数据的集合容器. 数组的定义格式: 数据类型[]  变量名  =  new  数据类型[长度]; 数组的好处:对分配到数组对象中每一个数据都分配一个编号(索引值.角 ...

  9. 第 14 章 程序员常用 10 种算法

    第 14 章 程序员常用 10 种算法 1.二分查找算法 1.1.二分查找算法介绍 前面我们讲过了二分查找算法,是使用递归的方式,下面我们讲解二分查找算法的非递归方式 二分查找法只适用于从有序的数列中 ...

最新文章

  1. 软件定义网络 对我们有多重要?
  2. spring boot(八)RabbitMQ使用
  3. Ubuntu 20.04 LTS安装搜狗输入法,只需三条命令,还能自动更新
  4. css的基本操作学习--css样式,选择器,hover,文字属性,文本属性,背景
  5. Service Worker 的一个实战例子
  6. Permutation Partitions CodeForces - 1326C(组合数学+思维)
  7. tensorflow基本教程
  8. 算法随笔一(背包问题)
  9. linux的trace文件路径,linux系统分析工具之Blktrace(十)
  10. 干货:通过双十一等项目实战看架构技术
  11. 豆瓣、唱吧、爱回收等106款应用被工信部下架
  12. bzoj5056:OI游戏
  13. python3.6安装pyspider
  14. web环境下的图像打印组件
  15. SVN下载项目到本地
  16. 关于昆仑通态通道处理设置
  17. swoole php配置文件,EasySwoole分离配置文件
  18. android 代码设置默认浏览器打开,android手机如何设置默认浏览器?
  19. 9大代理服务器软件的比较与分析之校园局域网代理蝴蝶
  20. eval函数介绍与用法

热门文章

  1. Spark MLlib实现的广告点击预测–Gradient-Boosted Trees
  2. MySQL事务隔离级别和Spring事务关系介绍
  3. python将某个列表按元素值分成多个子列表
  4. 如何创建一个数据科学项目? 1
  5. Oracle 客户端库时引发 BadImageFormatException
  6. 金蝶BOS开发中Edit编辑界面和List叙事薄界面需要写的代码
  7. ECharts - 背景透明
  8. 静态路由实验配置举例
  9. 虚拟化(4)_离线克隆与在线克隆
  10. 数据挖掘笔试面试(10)