【问题标题】:Store the indexes of random elements correctly in an array将随机元素的索引正确存储在数组中
【发布时间】:2017-07-05 12:56:36
【问题描述】:

我得到了一个由节点对象填充的数组a。例如,我的屏幕上有 200 个节点,所有节点都保存在这个数组中。这些节点由单独的索引a[0], a[1], 等标记。现在,当我选择一些随机节点(例如最短路径)并将它们存储在第二个数组b 中,它看起来像b = [ object, object, object, object.....], 有没有办法自动返回数组a 中的位置?例如,当我单击一个随机节点时,它位于数组a 中的第三个位置,这意味着在a[2],然后我希望自动返回或存储该位置,可能在第三个数组c 中。最后,它可能看起来像:c= [ a[2], a[6], a[18], a[7], a[0] .....]。希望有人可以帮助我解决我的问题。非常感谢!

【问题讨论】:

  • 你是怎么得到b的?
  • 嘿,我使用 d3.js 方法返回最短路径。但是当我console.log(b) 时,它说[ object, object, object, object.....]

标签: javascript arrays loops variables indexof


【解决方案1】:

我不确定您的数组的格式以及对象包含的内容。使用 indexOf,https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf,可能是一个解决方案。

使用 indexOf 您可以使用在第二个数组中单击的对象搜索第一个数组,然后您可以将其推送到第三个数组。

【讨论】:

    【解决方案2】:

    如果我正确理解您的问题,您的数组 a 看起来像这样:

    a = [{id:1} , {id:2} , {id:3} , {id:4}]
    

    然后随机点击元素,然后将它们存储在数组b 中:

    b = [{id:3}, {id:1}]
    

    所以最终你要记住a[2]存储在位置b[0],a[0]存储在位置b[1]的信息,对吧?

    您可以做的不是将整个对象存储在b 中,而只是存储它们的 id:

    b = [3, 1]
    

    这样,您可以轻松找到他们所在的位置:

    findPosition(node){
     return b.indexOf( node.id )
    }
    
    console.log(findPosition(a[2])) // 0
    

    【讨论】:

    • 嘿,我的数组看起来像这样a = [ object, object, object, object.....]。但是每个对象都有一个索引。
    • 是吗?看起来它符合我的建议,不是吗?成功了吗?
    猜你喜欢
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多