在Javascript中数组对象(json)里元素相同的操作
let arry = [
{ expensedate: '2018/09/29', amount: 1, type: '交通费' },
{ expensedate: '2018/08/19', amount: 2.5, type: '补贴费' },
{ expensedate: '2018/09/29', amount: 6.3, type: '住宿费' },
{ expensedate: '2018/01/19', amount: 18.5, type: '采购经费' },
{ expensedate: '2018/09/22', amount: 8.4, type: '活动经费' },
{ expensedate: '2018/09/29', amount: 7.9, type: '材料打印费' }
]
let items = [];
let datelist = {};
for (let i = 0; i < arry.length; i++) {
let element = arry[i];
if (!datelist[element.expensedate]) {
items.push({
expensedate: element.expensedate,
subitems: [element]
})
datelist[element.expensedate] = element;
} else {
for (let j = 0; j < items.length; j++) {
let subment = items[j];
if (subment.expensedate == element.expensedate) {
subment.subitems.push(element)
}
}
} }
console.log(items);
2、数组对象元素相同,汇总显示
let arrys = [
{ expensedate: '2018/09/29', amount: 1, type: '交通费' },
{ expensedate: '2018/08/19', amount: 2.5, type: '补贴费' },
{ expensedate: '2018/09/29', amount: 6.3, type: '交通费' },
{ expensedate: '2018/01/08', amount: 18.5, type: '采购经费' },
{ expensedate: '2018/09/22', amount: 8.4, type: '活动经费' },
{ expensedate: '2018/09/29', amount: 7.9, type: '交通费' }
]
let otheritems = [];
let list = {};
for (let i = 0; i < arrys.length; i++) {
let element = arry[i].expensedate;
if (list[element]) {
list[element].expensedate = list[element].expensedate;
list[element].amount = list[element].amount + arrys[i].amount;
} else {
list[element] = {};
list[element].expensedate = arrys[i].expensedate;
list[element].amount = arrys[i].amount;
}
list[element].type = arrys[i].type;
}
//对象转数组
for (var i in list) {
otheritems.push(list[i])
}
console.log(otheritems)
在Javascript中数组对象(json)里元素相同的操作的更多相关文章
- JavaScript中数组对象详解
Array对象即数组对象用于在单个变量中存储多个值,JS的数组是弱类型的,所以允许数组中含有不同类型的元素,数组元素甚至可以是对象或者其他数组. 创建数组的语法 1.Array构造器 1.var li ...
- javascript中数组常用方法总结
原文:javascript中数组常用方法总结 在javascript的基础编程中,数组是我们最常遇到的,那么数组的一些常用方法也是我们必须要掌握的,下面我们总结一下数组中常用的方法. toString ...
- JavaScript中数组Array方法详解
ECMAScript 3在Array.prototype中定义了一些很有用的操作数组的函数,这意味着这些函数作为任何数组的方法都是可用的. 1.Array.join()方法 Array.join()方 ...
- javascript之数组对象与数组常用方法
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- javascript中数组的常用算法深入分析
Array数组是Javascript构成的一个重要的部分,它可以用来存储字符串.对象.函数.Number,它是非常强大的.因此深入了解Array是前端必修的功课.本文将给大家详细介绍了javascri ...
- javascript中数组化的一般见解
javascript中数组化的一般见解,数组化浏览器中存在许多类数组对象,往往对类数组操作比较麻烦,没有数组那些非常方便的方法,在这种情况下,就有了数组化方法. 数组化的一般方法 1.第一种也是我们最 ...
- 总结Javascript中数组各种去重的方法
相信大家都知道网上关于Javascript中数组去重的方法很多,这篇文章给大家总结Javascript中数组各种去重的方法,相信本文对大家学习和使用Javascript具有一定的参考借鉴价值,有需要的 ...
- JavaScript中数组Array.sort()排序方法详解
JavaScript中数组的sort()方法主要用于对数组的元素进行排序.其中,sort()方法有一个可选参数.但是,此参数必须是函数. 数组在调用sort()方法时,如果没有传参将按字母顺序(字符编 ...
- JavaScript中数组的使用
---恢复内容开始--- 创建数组 1,通过 var arr1 = [1,2,3] 2通过使用 var arr2 = new Array(1,2,3) 在这里创造的数组实际上都是一个对象,然后把对象的 ...
随机推荐
- maven和glassfish安装和部署及hello1和hello2的部署
1.安装maven和glassfish及配置环境变 首先搜索并下载maven3.6.0和glassfish4.1.1(版本看按需要选择). 点击安装包进行安装 安装完成后开始配置环境变量 打开系统环境 ...
- 正则序RegExp
正则的理解 1.正则的懒惰性 每次在exec()中捕获的时候,只捕获第一次匹配的内容,而不往下不捕获了.我们把这叫正则的懒惰性,每一次捕获的开始位置都是从0开始 解决正则的懒惰性 修饰符g 正则 ...
- python自动化打开网页
from selenium.webdriver.firefox.options import Options as FOptionsfrom selenium.webdriver.chrome.opt ...
- 【Java】递归递推的应用
利用阶乘公式来计算组合式: 程序设计思想: 根据公式来计算组合数的大小,从键盘输入n,k的值,设计一个计算阶乘的大小,如果输入的数a为1或0,则直接return 1,否则运用递归,计算a-1的阶乘,直 ...
- js_初识js_js基本语法和数据类型
1.js基础 2.js.html.css运行在浏览器(客户端)的语言 java php运行在服务器端 js最初的目的:在客户端处理表单的验证操作 js的解释器被称为js引擎,为浏览器的一部分,最早是在 ...
- LeetCode 50 - Pow(x, n) - [快速幂]
实现 pow(x, n) ,即计算 x 的 n 次幂函数. 示例 1: 输入: 2.00000, 10输出: 1024.00000 示例 2: 输入: 2.10000, 3输出: 9.26100 示例 ...
- Vue 前端面试题
Vue 前端面试题 1. 说一下 Vue 的双向绑定数据的原理 vue 实现数据双向绑定主要是:采用数据劫持结合“发布者 - 订阅者”模式的方式,通过 Object.defineProperty() ...
- Codeforces Round #542 题解
Codeforces Round #542 abstract I决策中的独立性, II联通块染色板子 IIIVoronoi diagram O(N^2 logN) VI环上距离分类讨论加取模,最值中的 ...
- Multi-Projector Based Display Code ------- Home
Overview This project provides you with the tools and techniques you need to create your own large-a ...
- Autohotkey常用命令
//输入密码#1::send test1234sleep 600send {enter}return //打开程序; win + t: open total cmd#t::IfWinNotExist ...