【问题标题】:Comparing 2 arrays in java script在javascript中比较2个数组
【发布时间】:2019-01-22 16:43:48
【问题描述】:

如何在 javascript 中比较一个已排序的降序数组和一个未排序的数组以及已排序的数组中未排序的数组元素位置。

所以如果排序数组中的元素个数是 7

[100,90,80,70,60,50,40]

未排序数组的元素个数为4 未排序数组为

[200,10,55,65]

那么输出将是

1
8
6
5

【问题讨论】:

  • 你的输出是如何得到 1 8 6 5 的?我不确定你的意思
  • 为什么输出会是1 8 6 5
  • 该输出是否应该类似于您需要插入新元素的索引?不是,确切地说,因为 JS 是从零开始的,但它看起来好像是这样的。
  • 当在数组中遇到 200 时,它会在索引 1 处发送,这使得数组 200 100 90 80 70 60 50 40.for 10 它到达数组的末尾,使它在位置 8.for 55 它转到位置 6,对于 65,它转到位置 5。请不要更改原始数组。我只想知道前一个数组元素的索引
  • 请查看How to Ask

标签: javascript arrays node.js ecmascript-6


【解决方案1】:

您似乎想要找到每个元素适合排序数组的位置的索引(从一开始)。你应该可以使用map()findIndex() 做到这一点:

let arr = [100,90,80,70,60,50,40]
let a2 = [200,10,55,65]

let indexes = a2.map(n => {
    // find the first place in arr where it's less than n
    let ind = arr.findIndex(i => i < n)  

    // if n wasn't found, it is smaller than all items: return length + 1
    return (ind === -1) ? arr.length + 1 : ind  + 1
})
console.log(indexes)

【讨论】:

  • 能否详细说明退货部分??
  • 当然@vinayak_shahdeo 那是ternary operator。它说如果ind === -1 只返回数组的长度+1,否则返回ind +1。如果您正在查看的数字小于数组中的所有项目(例如本例中的 10),ind 将为 -1。在这种情况下,findIndex() 找不到索引,因为没有更小的元素。所以它返回-1。三元运算符让我们可以测试这种特殊情况并返回正确的值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-24
  • 1970-01-01
  • 2011-12-01
  • 2017-09-30
  • 2021-12-25
  • 2011-12-03
  • 1970-01-01
相关资源
最近更新 更多