array:[{
"amount":5000,
"goodsInfo":"翡翠城租金",
"tradeTime":"2019-04-20"
},
{
"amount":1200,
"goodsInfo":"五联西苑租金",
"tradeTime":"2019-04-25"
},
{
"amount":200,
"goodsInfo":"爱与家宾馆",
"tradeTime":"2019-04-30"
},
{
"amount":3800,
"goodsInfo":"丁香花园",
"tradeTime":"2019-05-20"
},
{
"amount":2500,
"goodsInfo":"滨兴小区",
"tradeTime":"2019-05-28"
},
{
"amount":2800,
"goodsInfo":"滨苑小区",
"tradeTime":"2019-06-08"
}]
我从后台拿到一组数据是如果这样的,我要怎么提取出年份月份一样的,将其排在一起变成像下面那个数组,后面有效果图
newArray:[
{
"tradeTime":[
{
"amount":5000,
"goodsInfo":"翡翠城租金",
"tradeTime":"2019-04-20"
},
{
"amount":1200,
"goodsInfo":"五联西苑租金",
"tradeTime":"2019-04-25"
},
{
"amount":200,
"goodsInfo":"爱与家宾馆",
"tradeTime":"2019-04-30"
}
]
},
{
"tradeTime":[
{
"amount":3800,
"goodsInfo":"丁香花园",
"tradeTime":"2019-05-20"
},
{
"amount":2500,
"goodsInfo":"滨兴小区",
"tradeTime":"2019-05-28"
}
]
},
{
"tradeTime":[
{
"amount":2800,
"goodsInfo":"滨苑小区",
"tradeTime":"2019-06-08"
}
]
}
]
我写了一个函数你可以看一下:
var arr = [{
"amount": 5000,
"goodsInfo": "翡翠城租金",
"tradeTime": "2019-04-20"
},
{
"amount": 1200,
"goodsInfo": "五联西苑租金",
"tradeTime": "2019-04-25"
},
{
"amount": 200,
"goodsInfo": "爱与家宾馆",
"tradeTime": "2019-04-30"
},
{
"amount": 3800,
"goodsInfo": "丁香花园",
"tradeTime": "2019-05-20"
},
{
"amount": 2500,
"goodsInfo": "滨兴小区",
"tradeTime": "2019-05-28"
},
{
"amount": 2800,
"goodsInfo": "滨苑小区",
"tradeTime": "2019-06-08"
}
];
sortByMonth(arr);
function sortByMonth(arr) {
var resultObj = {}; // 我觉得这个格式的更好用一些
var resultArr = [];
for (let i in arr) {
let tradeTime = arr[i].tradeTime;
tradeTime = tradeTime.slice(0, tradeTime.lastIndexOf('-'));
if (!resultObj[tradeTime]) {
resultObj[tradeTime] = [];
}
resultObj[tradeTime].push(arr[i]);
}
for (let j in resultObj) {
resultArr.push({
tradeTime: resultObj[j]
});
}
return resultArr;
}
一楼的也不错,用对象的唯一键区分
我写了另一种方法
let array = [{
"amount": 5000,
"goodsInfo": "翡翠城租金",
"tradeTime": "2019-04-20"
},
{
"amount": 1200,
"goodsInfo": "五联西苑租金",
"tradeTime": "2019-04-25"
},
{
"amount": 200,
"goodsInfo": "爱与家宾馆",
"tradeTime": "2019-04-30"
},
{
"amount": 3800,
"goodsInfo": "丁香花园",
"tradeTime": "2019-05-20"
},
{
"amount": 2500,
"goodsInfo": "滨兴小区",
"tradeTime": "2019-05-28"
},
{
"amount": 2800,
"goodsInfo": "滨苑小区",
"tradeTime": "2019-06-08"
}];
let newArr = []; // 最终结果数组
let timeArr = []; // 存储array中所有的日期种类
array.forEach(item => {
let time = item.tradeTime.replace(/^([0-9]{4}\-[0-9]{2}).*/g, "$1"); // 取出年和月 2019-xx
if (timeArr.indexOf(time) == -1) { // 如果时间数组里没有当前的年月
timeArr.push(time); // 时间数组添加此年月的种类
newArr.push({"tradeTime":[]}); // 最终结果数组添加一个此种类空数组备用
}
})
array.forEach(item => {
let time = item.tradeTime.replace(/^([0-9]{4}\-[0-9]{2}).*/g, "$1"); // 取出年和月 2019-xx
let index = timeArr.indexOf(time); // 获取此年月是第几种
newArr[index].tradeTime.push(item); // 找到对应的种类push进去
})
console.log(newArr);