【问题标题】:How to create an object depending on the last seven days?如何根据过去 7 天创建对象?
【发布时间】:2025-11-25 14:45:01
【问题描述】:

我有以下对象:

[
    { 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, 1, 3, 2]

如果您将第二个与第一个进行比较,您会发现这是根据星期几组织的。

可以这样做吗?

提前致谢

【问题讨论】:

  • 如果你已经展示了你到目前为止所尝试的内容,这个问题会更受欢迎。它通常是一个回答您无法解决的问题的论坛,而不是为您解决家庭作业的论坛。 :)

标签: javascript arrays reactjs object iteration


【解决方案1】:

是的,这是可能的。您将需要使用自定义 sort,然后使用 map 来获取您正在寻找的值。

【讨论】:

    【解决方案2】:

    Ciao,您可以对createdAt 属性上的数组进行排序,并使用map 函数仅检索numberofCreations 属性。比如:

    let input = [
        { 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 }
    ]
    
    input.sort(function(a, b) {
       return a.createdAt - b.createdAt;
    })
    
    console.log(input.map(el => el.numberofCreations))

    【讨论】:

      【解决方案3】:

      您的代码显示对象的数组。顺便说一句,在您的对象中,您将冒号误认为逗号。

      let array = [
        { 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 }
      ];
      

      要对数组元素进行排序,您可以使用 sort 方法。 “a”是列表的第一个元素,“b”是下一个元素。因为您想按 createdAt 排序,所以您将比较 a.createdAtb.createdAt

      array.sort((a, b) => a.createdAt - b.createdAt);
      
      console.log(array);
      [{ createdAt: 1, numberofCreations: 2 },
      {createdAt: 2, numberofCreations: 6},
      {createdAt: 3, numberofCreations: 3},
      {createdAt: 4, numberofCreations: 1},
      {createdAt: 5, numberofCreations: 1},
      {createdAt: 6, numberofCreations: 3},
      {createdAt: 7, numberofCreations: 2}]
      

      【讨论】:

        最近更新 更多