zoukankan      html  css  js  c++  java
  • [Javascript ] Array methods in depth

    Sort can automatically arrange items in an array. In this lesson we look at the basics including how to sort an array of strings alphabetically and the correct way to perform a numerical sort on an array of numbers. We finish as always with a practical use-case that shows not only sort in action, but also how it can be chained together with other array methods such as map and join.

    Problem with sort number in Array:

    var data = [10, 20, 15];
    var sorted = data.sort();
    
    console.log(sorted); // [10, 15, 20]

    Code works fine, but there is a problem: 

    When calling sort on an array with numbers, what actually happens is each number is converted to a string, and they're compared using their position in Unicode.

    var data = [10, 20, 15, 30 ,2];
    var sorted = data.sort();
    
    console.log(sorted); // [10, 15, 2, 20, 30]

    This is because, in Unicode, 10 does come before 2. Again, this is because these numbers are being converted to strings first.

    To solve the problem:




    var
    data = [10, 20, 15, 30 ,2]; var sorted = data.sort( (a,b)=>{ return a-b; } ); console.log(sorted);

    We need to provide a comparative function to make it work. If a - b < 0 then it just put a before b;

    Also according to that, we can compare the lenght of string, then sort them in order:

    var sorted = names.sort( (a,b)=>{
      return a.length - b.length;
    } );
    console.log(sorted); // ["Bob", "Kent", "Kettly", "Jusnine"]

    A more useful example : sort objects

    var list = lessons.sort( (a,b)=>{
      return a.views-b.views
    } )
    .map( (lession)=>{
      return `    <li>${lession.title} - ${lession.views}</li>`;
    } )
    .join('
    ');
    
    var output = `<ul>
    ${list}
    </ul>`;
    
    console.log(output); 
    /*
    "<ul>
        <li>Javascript Array methods in depth - concat - 1000</li>
        <li>Javascript Array methods in depth - join - 1025</li>
        <li>Javascript Array methods in depth - slice - 1050</li>
    </ul>"
    */
  • 相关阅读:
    [Linux] Nginx服务下统计网站的QPS
    [Go] go等待读取最后一行的数据内容
    [Go] Golang中的面向对象
    [Linux] 常见的并发模型
    [PHP] pmap可以查看进程占用内存的详细情况
    [PHP] 解决php中上传大文件的错误
    [PHP] 循环查看php-fpm的内存占用情况
    [Go] go中的goto语句跳到指定标签
    Java抽象类(Abstract Class)与接口(Interface)区别
    Java访问级别修饰符
  • 原文地址:https://www.cnblogs.com/Answer1215/p/5055910.html
Copyright © 2011-2022 走看看