javascript数据处理和筛选

简介: javascript数据处理和筛选
var arr = [
    { name: '节点1', value: 1, type: 2, date: '2018-06-07T08:00:01.589Z' },
    { name: '组件T1', value: 1, type: 2, date: '2018-06-07T08:10:01.589Z' },
    { name: '节点2', value: 1, type: 4, date: '2018-06-07T20:00:01.589Z' },
    { name: '节点2', value: 4, type: 4, date: '2018-06-07T20:10:21.189Z' },
    { name: '节点4', value: 1, type: 4, date: '2018-06-07T08:00:01.560Z' },
    { name: '节点4', value: 2, type: 4, date: '2018-06-07T08:10:31.584Z' },
    { name: '节点6', value: 1, type: 3, date: '2018-06-07T08:00:01.589Z' },
    { name: '节点5s', value: 1, type: 4, date: '2018-06-07T08:00:01.589Z' },
    { name: '组件T2', value: 1, type: 4, date: '2018-06-07T08:00:01.589Z' },
    { name: '组件T1', value: 4, type: 4, date: '2018-06-07T08:06:01.589Z' },
    { name: '样式5', value: 1, type: 4, date: '2018-06-07T08:00:01.589Z' },
    { name: '样式2', value: 5, type: 4, date: '2018-06-02T08:07:01.589Z' },
    { name: '样式2', value: 6, type: 4, date: '2018-06-07T08:00:01.589Z' },
    { name: '样式3', value: 1, type: 4, date: '2018-06-05T08:00:01.589Z' },
    { name: '样式', value: 1, type: 4, date: '2018-06-07T08:00:01.589Z' },
    { name: 'css9', value: 7, type: 4, date: '2018-06-04T08:04:01.588Z' },
    { name: 'js9', value: 1, type: 4, date: '2018-06-02T08:00:01.577Z' },
    { name: 'js9', value: 2, type: 4, date: '2018-06-07T08:00:01.110Z' },
    { name: 'js10', value: 1, type: 1, date: '2018-06-07T08:00:01.534Z' }
];
// * 请用您认为最优化的方式,将arr中的type为4的数据过滤出来,
// * 然后按相同的 name + date(按天)合并value(value累加),
// * 然后按 value 降序(从大到小)排序,
// * 最后每行按照 "${name},${本地日期},售出${sum(value)}部" 的格式,如:"节点2,2017年06月08日,售出5部", 打印(console.log)出来。

const settleEvents = (arr) => {
    const typeArr = arr.filter(v => v.type === 4)
    var i = 0
    let res = []
    while (i < typeArr.length - 1) {
        ++i;
        const idx = typeArr[i].name + '' + typeArr[i].date
        for (let j = 0; j < typeArr.length; j++) {
            const idj = typeArr[j].name + '' + typeArr[j].date
            let date = new Date(typeArr[j].date)
            let formatDate = date.getFullYear() + '年' + (date.getMonth() + 1) + '月' + date.getDate() + '日'
            if (idx === idj) {
                res.push({
                    name: typeArr[j].name,
                    date: formatDate,
                    value: typeArr[j].value + typeArr[i].value
                })
            }
        }
    }
    res.sort((a, b) => b.value - a.value).forEach(d => {
        console.log(`${d.name},${d.date},售出${d.value}部`)
    })
}
settleEvents(arr)
相关文章
|
JSON 前端开发 JavaScript
javascript:layui实现定位、查询数据以及select筛选的组合功能
javascript:layui实现定位、查询数据以及select筛选的组合功能
342 0
|
10天前
|
前端开发 JavaScript
JS-数据筛选
JS-数据筛选
25 7
|
18天前
|
数据采集 JavaScript 前端开发
JavaScript中通过array.filter()实现数组的数据筛选、数据清洗和链式调用,JS中数组过滤器的使用详解(附实际应用代码)
JavaScript中通过array.filter()实现数组的数据筛选、数据清洗和链式调用,JS中数组过滤器的使用详解(附实际应用代码)
|
2月前
|
JavaScript
js团队筛选功能
js团队筛选功能
18 0
|
JavaScript
js多条件筛选(可单条件搜索还可以模糊查询)
js多条件筛选(可单条件搜索还可以模糊查询)
256 0
|
JavaScript 前端开发 定位技术
js对二维数组的精确和模糊筛选并输出的封装函数
js对二维数组的精确和模糊筛选并输出的封装函数
117 0
|
5月前
|
JavaScript 前端开发
JS下拉筛选功能
JS下拉筛选功能
|
5月前
|
JavaScript 前端开发
js查找筛选的方法
js查找筛选的方法
55 0
|
JavaScript 前端开发 API
javascript遍历对象数组排序筛选需要的键值
javascript遍历对象数组排序筛选需要的键值
65 0
|
SQL JavaScript 关系型数据库
API接口获得数据后处理JS数组(包含字符串对象)分组、过滤和筛选的解决方案
API接口获得数据后处理JS数组(包含字符串对象)分组、过滤和筛选的解决方案
157 0