GVKun编程网logo

javascript排序数组(js 排序数组)

17

在本文中,我们将为您详细介绍javascript排序数组的相关知识,并且为您解答关于js排序数组的疑问,此外,我们还会提供一些关于javascript–JS排序数组由三种排序类型组成、javascri

在本文中,我们将为您详细介绍javascript排序数组的相关知识,并且为您解答关于js 排序数组的疑问,此外,我们还会提供一些关于javascript – JS排序数组由三种排序类型组成、javascript – 使用数字排序数组而不使用sort()方法、javascript – 在LARGE排序数组中删除长度小于`n`的元素、javascript – 按关键对象排序数组的有用信息。

本文目录一览:

javascript排序数组(js 排序数组)

javascript排序数组(js 排序数组)

我的数组没有正确排序.有人能让我知道我做错了什么吗?
...
 sortArray = new Array ("hello","Link to Google","zFile","aFile");

//sort array
        if (dir == "asc") { 
            sortArray.sort(function(a,b){return a - b}); 
        } else { 
            sortArray.sort(function(a,b){return b - a});
        }

        for(var i=0; i<sortArray.length; i++) { 
            console.log(sortArray[i]);
        }

日志按照输入的顺序显示它们.

解决方法

您希望在排序中进行比较,而不是减法:
if (dir == "asc") {
    sortArray.sort(function(a,b) {
        a = a.toLowerCase();
        b = b.toLowerCase();
        return a === b ? 0 : a > b : 1 : -1;  
    });
} else {
    sortArray.sort(function(a,b) {
        a = a.toLowerCase();
        b = b.toLowerCase();
        return b === a ? 0 : b > a : 1 : -1;  
    });
}

我也习惯了toLowerCase(),以便’适当地放置’链接到谷歌’.

编辑:根据comment.更新以修复比较问题

See example →

javascript – JS排序数组由三种排序类型组成

javascript – JS排序数组由三种排序类型组成

我需要根据搜索词按以下顺序对数组进行排序.

>精确的字符串.
>从一开始.
>包含.

代码:

var arr = ['Something here Hello','Hell','Hello'];

var term = 'Hello';

var sorted = arr.slice().sort((a,b) => {
  let value = 0;

  if (a.startsWith(term)) {
    value = -1;
  }

  if (a.indexOf(term) > -1) {
    value = -1;
  }

  if (a === term) {
    value = -1;
  }

  return value;
});

console.log(sorted);

预期的结果是:

["Hello","Hell","Something here Hello"]

我不确定如何使用内置的排序功能来实现这一点,因为它看起来并不适合用于这样的情况.请问有什么建议吗?

解决方法

您需要一个为分阶段排序返回值的函数.

在排序回调内部,您需要返回反映两个字符串之间关系的两个值的增量.

const compareWith = term => string => {
        if (string === term) return 1;
        if (term.startsWith(string)) return 2; // switch string and term
        if (string.includes(term)) return 3;   // use includes
        return Infinity;                       // unkNown strings move to the end
    };

var array = ['Something here Hello','Hello'],term = 'Hello',order = compareWith(term);

array.sort((a,b) => order(a) - order(b));

console.log(array);

javascript – 使用数字排序数组而不使用sort()方法

javascript – 使用数字排序数组而不使用sort()方法

我正在学习 Javascript而且我坚持使用我在教程中找到的练习,我认为这是学习street.com …我必须使用数字排序数组而不使用sort()方法.像这样的东西:
numbers =[12,10,15,11,14,13,16];

我从今天早上开始尝试了很多东西,但我找不到怎么做.有人可以帮忙吗?我也需要解释,不仅仅是答案!

谢谢

哦,看看我现在拥有的东西:

function ordre(liste){
var result=[];


for(i=0; i<liste.length; i++){

for(j=0; j<liste.length; j++){
        if(liste[i]>liste[j+1]){

        }
    }

 }

 console.log( result );
}

ordre(nombres);

解决方法

这是一个 Bubble sort功能供您参考,但如前所述,有许多不同的 sorting algorithms.
function bubbleSort(array) {
  var done = false;
  while (!done) {
    done = true;
    for (var i = 1; i < array.length; i += 1) {
      if (array[i - 1] > array[i]) {
        done = false;
        var tmp = array[i - 1];
        array[i - 1] = array[i];
        array[i] = tmp;
      }
    }
  }

  return array;
}

var numbers = [12,16];
bubbleSort(numbers);
console.log(numbers);

javascript – 在LARGE排序数组中删除长度小于`n`的元素

javascript – 在LARGE排序数组中删除长度小于`n`的元素

首先让我解释一下我想要的东西.好吧,我有一个像这样的排序数组

var arr = ["ab", "abcd", "abdf", "abcdd", "abcdd", "abcdfd", "abcdsss", "abcdefgh", "abcdsdsdsds"];

现在我需要删除字符串长度小于5的所有元素.好的,现在我的观点是,是否有任何最简单的方法来查找字符串长度为4的元素的索引.这里有两个元素包含字符串长度4.但是我需要最后一个.如果可以获得该索引,我可以申请

arr.splice(0, (index+1));

有一件事,我的原始数组包含100万个数据.现在我该如何解决这个问题?

解决方法:

您可以使用数组过滤器删除元素.

var arr = ["ab", "abcd", "abdf", "abcdd", "abcdd", "abcdfd", "abcdsss", "abcdefgh", "abcdsdsdsds"];
arr = arr.filter(function(item) { 
  return item.length > 4;
});
//["abcdd", "abcdd", "abcdfd", "abcdsss", "abcdefgh", "abcdsdsdsds"]

我不知道你如何在数组中有一百万个项目,但也许你可以在将它发送到客户端之前尝试减少服务器中的数组. (我不确切知道你的数据来自哪里,但这是一个javascript数组的大量数据);

javascript – 按关键对象排序数组

javascript – 按关键对象排序数组

我有以下结构:

var participant0 = {
    name : "",
    nickname : "",
    number "99999"
} ;

var participant1 = {
    name : "bbb",
    nickname : "",
} ;

var participant2 = {
    name : "",
    nickname : "aaa"
} ;

var participant3 = {
    name : "ccc",
    nickname : ""
} ;

我有一个包含结构实例的数组:

var array = [participant0, participant3, participant1, participant2];

我想按字母顺序排列这个数组.名字第一,昵称第二名.如果这两个键不存在,我想检查数字键并将此元素放在排序列表的末尾.

预期结果 :

var array = [participant2, participant1, participant3, participant0];

(按“aaa”,“bbb”,“ccc”,“9999”排序对象)

下面的代码工作正常,按名称或昵称排序,但我不知道如果有数字键,如何将项目放在排序列表的末尾:

fav_list.sort(function(x, y) {
              return (x.participant.name || x.participant.nickname).localeCompare(y.participant.name || y.participant.nickname);
            });

解决方法:

我认为应该这样做,请参阅代码中的注释:

fav_list.sort(function(x, y) {
    var xvalue = x.participant.name || x.participant.nickname;
    var yvalue = y.participant.name || y.participant.nickname;
    // By name if both have names
    if (xvalue && yvalue) {
        return xvalue.localeCompare(yvalue);
    }
    // Names always come before numbers
    if (xvalue) {
        return -1;
    }
    if (yvalue) {
        return 1
    }
    // Otherwise compare numbers
    return (x.participant.number || 0) - (y.participant.number || 0);
});

您可能希望使用最后一行中的默认数字(零).

请注意,您显示的数组与该代码不完全匹配,因为该数组直接使用参与者,但代码期望参与者位于对象的参与者属性上.

带有轻微调整数组的实例,以及一种方便的方式来说明我们最终的订单:

var participant0 = {
  name: "",
  nickname: "",
  number: "99999",
  debug: 0
};

var participant1 = {
  name: "bbb",
  nickname: "",
  debug: 1
};

var participant2 = {
  name: "",
  nickname: "aaa",
  debug: 2
};

var participant3 = {
  name: "ccc",
  nickname: "",
  debug: 3
};

var array = [
  {
    participant: participant0
  },
  {
    participant: participant3
  },
  {
    participant: participant1
  },
  {
    participant: participant2
  }
];

array.sort(function(x, y) {
  var xvalue = x.participant.name || x.participant.nickname;
  var yvalue = y.participant.name || y.participant.nickname;
  // By name if both have names
  if (xvalue && yvalue) {
    return xvalue.localeCompare(yvalue);
  }
  // Names always come before numbers
  if (xvalue) {
    return -1;
  }
  if (yvalue) {
    return 1
  }
  // Otherwise compare numbers
  return (x.participant.number || 0) - (y.participant.number || 0);
});
array.forEach(function(entry) {
  snippet.log(entry.participant.debug);
});
<!-- Script provides the `snippet` object, see http://Meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

关于javascript排序数组js 排序数组的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于javascript – JS排序数组由三种排序类型组成、javascript – 使用数字排序数组而不使用sort()方法、javascript – 在LARGE排序数组中删除长度小于`n`的元素、javascript – 按关键对象排序数组等相关内容,可以在本站寻找。

本文标签: