【问题标题】:Order array by value and put at the middle按值排序数组并放在中间
【发布时间】:2016-10-21 19:00:56
【问题描述】:

非常快速的问题, 我想按特定值对数组进行排序并将其始终放在中间。 例如...如果我的数组是:

myarr = [1,2,3,4,5];

函数 middlelizeArr(myarr,2) 我应该返回这个数组:

 result [5,1,2,3,4]

并在偶数数组的情况下找到最佳条件

    myarr = [1,2,3,4,5,6,7,8];

result [7,8,1,2,3,4,5,6];

我怎么能这样做?有人可以帮助我吗?

【问题讨论】:

  • 你尝试了什么?
  • 你为什么要这样做?
  • 1) 在寻求帮助之前,您需要向我们展示您的尝试。 2)甚至不要考虑代码。想象一下,你有一堆桶,里面有几张纸,每个桶上都写着一个数字。 会如何排序呢?用几个不同的数字尝试这个过程,然后你就得到了你的算法。把它翻译成代码,你就完成了。

标签: javascript jquery arrays arraylist numbers


【解决方案1】:

首先你需要有一个数组的大小,然后找到一个你想放在中间的数字的位置

如果, n = 数组的大小 l = 你想放在中间的数字的位置

如果 n/2 > l,则顺时针移动数字,否则逆时针移动。

【讨论】:

    【解决方案2】:

    这是通过将“中间”数字的索引与数组的长度进行比较,然后移动(和推送)直到它们相等来完成的。

    我已经通过以下方式实现了它:

    function middlelizeArray(array, middle) {
        var goal = Math.trunc(array.length/2);
    
        while(array.indexOf(middle) != goal) {
            array.push(array.shift());
        }
        return array;
    }
    

    这也可以直接添加到数组原型中。这样你就可以说myArray.middlelize(2);

    应该是这样的:

    Array.prototype.middlelize = function(middle) {
        var goal = Math.trunc(this.length/2);
        while(this.indexOf(middle) != goal) {
            this.push(this.shift());
        }
        return this;
    }
    

    【讨论】:

    • 如果我想用 Obj 做同样的事情?例如...我想按 li 的特定值订购列表 UL...所以我的结构是...
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      我如何订购这个这个?这不起作用 $('ul').find('li').middlelize(7);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    • 1970-01-01
    • 2015-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多