【问题标题】:Is there an simple to get a certain element from an array and place that element to the last place?是否有一种简单的方法可以从数组中获取某个元素并将该元素放在最后一个位置?
【发布时间】:2019-09-07 12:55:03
【问题描述】:

我正在开发我的 Web 应用程序,我需要一个数组。该数组包含对象。我需要使用 for 循环检查该数组中的所有元素,如果其中一个满足条件,则获取该元素,对该元素执行我需要执行的操作,并将其放置到数组中的最后一个位置。像这样:

let myArray = [{obj1}, {obj2}, {obj3}, {obj4}, {obj5}];

比如{obj3}满足所有条件,我需要把它放到最后一个位置,像这样,所以数组是这样的:

myArray = [{obj1}, {obj2}, {obj4}, {obj5}, {obj3}];

{obj1}满足所有条件:

myArray = [{obj2}, {obj4}, {obj5}, {obj3}, {obj1}];

等等

【问题讨论】:

  • 为什么要先处理obj3,然后处理obj1?你在向后迭代吗?这个特定的输出顺序显然很重要。
  • 一旦满足条件,循环是否重新开始?
  • 在 stackoverflow 上提问之前请遵循指南。

标签: javascript arrays sorting indexing


【解决方案1】:

您可以filter除该特定值之外的值,然后将该值放在末尾,

这个例子考虑到所有值在你的数组中都是唯一的

let arr = [0,1,2,3,4,5,6,7,8,9]

let findAndPlaceAtLast = (value) =>{
  let temp = arr.filter(e=> e!=value)
  return [...temp,value]
}


console.log(findAndPlaceAtLast(4))
console.log(findAndPlaceAtLast(2))

如果有多个值与条件匹配,那么根据您想要的输出,您可以选择一个索引(甚至多个)您想要删除过滤数组并以与上述示例类似的方式在末尾添加值

【讨论】:

    【解决方案2】:

    你可以试试下面的例子

    arr = [1,2,3,4,5,6];
    console.log(arr);
    
    ele = arr[1] //save match element in a variable
    arr.splice(1, 1); //splice array and remove that element
    console.log(arr);
    arr.push(ele); // push element in array again
    console.log(arr);

    【讨论】:

      【解决方案3】:

      一旦有了索引,就可以使用 Array#spliceArray#push 来获取项目并将项目推送到数组中。

      array.push(...array.splice(index, 1))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-11-20
        • 2014-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-08
        相关资源
        最近更新 更多