嵌套数组由其他日期数组在javascript中升序更改[关闭]

Posted

技术标签:

【中文标题】嵌套数组由其他日期数组在javascript中升序更改[关闭]【英文标题】:Nested array change by other date array ascending in javascript [closed] 【发布时间】:2022-01-18 03:35:58 【问题描述】:

我有这个数组示例。

    [
        
        country: "Ukraina"
        date: [2021-10-30, 2021-10-15, 2021-09-20, 2021-11-15]
        id: 1
        price: [1.9600000381469727, 2.0299999713897705, 2.1500000953674316, 1.840000033378601]
        product: "Uzum"
        volume: 1
    
       
        country: "Korea"
        date: [2021-11-15, 2021-10-30, 2021-10-15, 2021-09-20]
        id: 2
        price: [11.789999961853027, 10.25, 13.319999694824219, null]
        product: "Uzum"
        volume: 1
       
    
        country: "Rossiya"
        date: [2021-11-15, 2021-10-30, 2021-10-15, 2021-09-20]
        id: 3
        price: [2.160000858306885, 2.2100000381469727, 1.7699999809265137, null]
        product: "Uzum"
        volume: 1
    
]

嵌套数组价格按日期数组元素升序变化。如何解决这个问题。有哪些算法可用?

  
                country: "Ukraina"
                date: [2021-09-20,  2021-10-15, 2021-10-30, 2021-11-15]
                id: 1
                price: [  2.1500000953674316, 2.0299999713897705, 1.9600000381469727, 1.840000033378601]
                product: "Uzum"
                volume: 1
    

【问题讨论】:

我不明白你到底想做什么,但我可以告诉你,只要你没有将 dateprice 转换为实际数组,它就不会工作.目前它们的值是string 您的 dateprice 属性不是数组。它们是 JSON。虽然可以解析,但最好还是从这个数据结构的源头解决。 @trincot 。对不起。问题不是日期 JSON。问题是排序相对 vy 日期优势 在移除 JSON 的更新后,您不再有日期,因为这些是数字减法。 【参考方案1】:

抛开数据格式,您可以使用自定义排序比较函数与另一个数组进行比较。将数据映射到可让您跟踪索引的表单,然后使用该索引来引用另一个数组。

const data = 
  arr1: [5, 1, 8, 9, 4],
  arr2: [9, 8, 7, 6, 5]


data.arr2 = data.arr2
  .map((d, i) =>  return  i: i, val: d  )
  .sort((a, b) => data.arr1[a.i] - data.arr1[b.i])
  .map(d => d.val)

data.arr1.sort()

console.log(data)

不过,真的,我建议更改数据结构,以便关联日期和价格:


    "country": "Ukraina",
    "transactions": [
         "date": "2021-10-30", "price": 1.9600000381469727 ,
         "date": "2021-10-15", "price": 2.0299999713897705 ,
         "date": "2021-09-20", "price": 2.1500000953674316 ,
         "date": "2021-11-15", "price": 1.840000033378601 
    ],
    "id": 1,
    "product": "Uzum",
    "volume": 1

那你就可以了

data.transactions.sort((a, b) => new Date(a.date) - new Date(b.date))

价格也会随之而来。

【讨论】:

我可以使用这种结构,但它是预期的数据。因为 。此数据在 frontEnd 中使用 Chartjs。所以我选择了日期:[] 和价格:[],如果我使用你的结构。之后我会选择日期和价格给其他数组。

以上是关于嵌套数组由其他日期数组在javascript中升序更改[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在javascript中更新子数组元素

如何在javascript中将嵌套对象转换为对象数组? [关闭]

JavaScript对数组对象进行升序排列

将javascript数组中的重复值分组在一起,然后按值名称升序对这些组进行排序

如何从嵌套数组中拼接出一个数组 - javascript

javascript内置对象(数组字符串日期)