问题描述
我有以下对象:
[
{ createdAt: 6,numberofCreations: 3 },{ createdAt: 7: numberofCreations: 2 },{ createdAt: 2: numberofCreations: 6 },{ createdAt: 3: numberofCreations: 3 },{ createdAt: 4: numberofCreations: 1 },{ createdAt: 1: numberofCreations: 2 },{ createdAt: 5: numberofCreations: 1 }
]
“ createdAt”属性中的每个数字都代表一周中的某一天(周日为1,周日为2,周一为3,周三为4,周三为5,周五为6,周五为7)。 “ numberOfCreations”属性中的每个数字代表一周中的一天创建了多少个元素。
我需要重新排列并创建一个新对象,在该对象中,id根据最近7天进行组织,并且井井有条。
含义类似:
[2,6,3,1,2]
如果将第二个与第一个进行比较,您会发现这是根据星期几来组织的。
可以这样做吗?
预先感谢
解决方法
是的,这是可能的。您将要使用自定义sort
,然后再使用map
获取您要查找的值。
请注意,您可以按createdAt
属性对数组进行排序,并使用map
函数仅检索numberofCreations
属性。像这样:
let input = [
{ createdAt: 6,numberofCreations: 3 },{ createdAt: 7,numberofCreations: 2 },{ createdAt: 2,numberofCreations: 6 },{ createdAt: 3,{ createdAt: 4,numberofCreations: 1 },{ createdAt: 1,{ createdAt: 5,numberofCreations: 1 }
]
input.sort(function(a,b) {
return a.createdAt - b.createdAt;
})
console.log(input.map(el => el.numberofCreations))
,
您的代码显示对象的数组。顺便说一句,在您的对象内部,您用逗号误了冒号。
let array = [
{ createdAt: 6,numberofCreations: 1 }
];
要对数组的元素排序,可以使用 sort 方法。 “ a”是列表的第一个元素,“ b”是下一个元素。因为您要按createdAt进行排序,所以您需要将 a.createdAt 与 b.createdAt 进行比较。
array.sort((a,b) => a.createdAt - b.createdAt);
console.log(array);
[{ createdAt: 1,{createdAt: 2,numberofCreations: 6},{createdAt: 3,numberofCreations: 3},{createdAt: 4,numberofCreations: 1},{createdAt: 5,{createdAt: 6,{createdAt: 7,numberofCreations: 2}]