js排序 奇数在前,偶数在后,升序排序

面试遇到了这样一个问题,由于自己对sort还不是特别了解,又是笔试,无法在线调试。回家后了解了一下,竟然5分钟就写出来了。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
var arr = [1,4,2,8,3,5,10,9,7,6,41,58];

        // 排序,奇数在前,偶数在后,从小到大升序排列
        var r = arr.sort((a,b)=>{

            // 如果是a是偶数,b是奇数
            if(a%2 === 0 && b%2 !== 0){
                return 1;
            }

            // 如果是a是奇数,b是偶数
            if(a%2 !== 0 && b%2 === 0){
                return -1;
            }

            // 如果是a,b都是偶数或者奇数
            if((a%2 === 0 && b%2 === 0) || (a%2 !== 0 && b%2 !== 0)){
                return a - b;
            }

        })
        console.log(r)
    </script>
</body>

</html>

原文地址:https://blog.51cto.com/xuyran/2427191

时间: 2024-10-08 04:28:21

js排序 奇数在前,偶数在后,升序排序的相关文章

使用TreeSet和Comparator,写TreeSetTest2 要求:对TreeSet中的元素1,2,3,4,5,6,7,8,9,10进行排列,排序逻辑为奇数在前偶数在后,奇数按照升序排列,偶数按照降序排列

/* * 使用TreeSet和Comparator,写TreeSetTest2 *要求:对TreeSet中的元素1,2,3,4,5,6,7,8,9,10进行排列, *排序逻辑为奇数在前偶数在后,奇数按照升序排列,偶数按照降序排列 */ import java.util.Comparator; import java.util.TreeSet; public class TreeTest2 { public static void main(String[] args) { // TODO Aut

【算法】 调整数组顺序,使得奇数在前偶数在后,分别保证奇数和偶数之间的相对位置不变

题目:输入一个整形数组,将数组重新排序,使得所有奇数在前偶数在后,并使奇数之间和偶数之间的相对位置爆出不变. 思想:从数组开头开始遍历所有数组.当碰到偶数时,将偶数打包,即记录到目前为止偶数的个数,把这些偶数看成一个整体:当碰到奇数时,将这个奇数与前面的偶数整体对调位置. #include <stdio.h> #include <stdlib.h> void nuo(int *a,int j,int nu)                     //将奇数与前面所有偶数调换位置

数组中,奇数放前偶数放后

题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. 错误代码: public class Solution { public void reOrderArray(int [] array) { int len=array.length; for(int i=0;i<len;i++){ if((array[i]&1)==0){ int j; for(j=i;j<

奇数在前偶数在后。各自反转后相连

#include <iostream> #include <stdlib.h> using namespace std; struct node { struct node *next; int value; }; node *CreateListNode(int value) { if(value==NULL) return NULL; node *pNode=(node*)malloc(sizeof(node)); pNode->value=value; pNode-&g

正负混合排序,正数在前,负数在后

最近看到一道面试题很有意思: 用一个lambda函数实现排序,排序后正数在前(由小到大),负数在后(由大到小),如列表[7,-8,5,4,0,-2,-5],排序后变为[0, 4, 5, 7, -2, -5, -8] 答案如下,有待优化: list = [7,-8,5,4,0,-2,-5] list.sort(key=lambda x:x*-100 if x<0 else x ) print(list)

c语言代码编程题汇总:升序,奇数在前,偶数在后

升序,奇数在前,偶数在后 自己的代码: 1 /* 2 2017年3月14日12:52:39 3 功能:升序,奇数在前,偶数在后 4 */ 5 #include "stdio.h" 6 int main () 7 { 8 int j = 0, k = 0; 9 int a[10]; 10 int b[10]; 11 int c[10]; 12 int *pa = a; 13 14 printf("please input 10 number: \n"); 15 for

在一个N个整数数组里面,有多个奇数和偶数,设计一个排序算法,令所有的奇数都在左边。

//在一个N个整数数组里面,有多个奇数和偶数,设计一个排序算法,令所有的奇数都在左边. // 例如: 当输入a = {8,4,1,6,7,4,9,6,4}, // a = {1,7,9,8,4,6,4,6,4}为一种满足条件的排序结果 using System; namespace SuanFa { class Program { //在一个N个整数数组里面,有多个奇数和偶数,设计一个排序算法,令所有的奇数都在左边. static void Main(string[] args) { int[]

js获取指定字符前/后的字符串简单实例

<!doctype html> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> </head> <script type="text/javascript"> /* string 字符串; str 指定字符; split(),用于把一个字符串分割成字符串数组; split(str)[0],读取数组中索引为

用C语言编程,实现调整数组,使奇数全部位于偶数前边,

函数要求实现功能:调整数组使奇数全部都位于偶数前面. 要求: 输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分. 思考,要想实现此功能,首先对函数数组进行遍历,从两头进行,一个从前向后查看数组元素是否为奇数,一个从后向前查看数组元素是否为偶数,如果前为偶,后为奇则进行调换! 程序如下: /* **2.调整数组使奇数全部都位于偶数前面. ** 题目: **输入一个整数数组,实现一个函数, **来调整该数组中数字的顺序使得数组