如何按与单词匹配的程度对二维数组进行排序

How to sort twodimensional array by how closely it matches a word?

本文关键字:二维数组 排序 程度 何按 单词匹      更新时间:2023-09-26

在这里小提琴:https://jsfiddle.net/t226j4ox/6/

我有一个 2D 数组,其中包含未排序的名称列表。

我正在尝试弄清楚如何根据它们与用户关键字的匹配程度对数组中的名称进行排序。在jsfiddle中,我将用户的关键字设置为"Be"以进行测试。理想情况下,当您点击"排序名称"按钮时,数组将被排序,以便以"Be"开头的名称首先出现。

应该如何实现这一点?

.HTML

<div id="button1">
Display All Names
</div>
<br>
<div id="button2">
Sort Names
</div>

.CSS

#button1{
  background:cornflowerblue;
  height:20px;
  width:200px;
  cursor:pointer;
  text-align:center;
}
#button2{
  background:mediumpurple;
  height:20px;
  width:200px;
  cursor:pointer;
  text-align:center;
}

.JS

var nameList = "";
var names = [["name","Bradley"],["id","Brooke"],["name","Bobby"],
             ["name","Bethany"],["id","Benjamin"],["name","Bella"],
             ["name","Blake"],["id","Beatrice"],["name","Baby"],
             ["name","Byron"],["id","Buster"],["name","Bailey"],
             ["name","Betty"],["id","Billy"],["name","Brady"]];

var userKeyword = "Be";

$(document).on('click', '#button1', function(event) { 
        for (i=0; i<5; i++){
            nameList += names[i][1] + " ";        
        }
        alert(nameList);
}); 
$(document).on('click', '#button2', function(event) { 
}); 

使用sort函数

var nameList = '';
var names = [
	['name','Bradley'],
	['id','Brooke'],
	['name','Bobby'],
	['name','Bethany'],
	['id','Benjamin'],
	['name','Bella'],
	['name','Blake'],
	['id','Beatrice'],
	['name','Baby'],
	['name','Byron'],
	['id','Buster'],
	['name','Bailey'],
	['name','Betty'],
	['id','Billy'],
	['name','Brady']
];
var userKeyword = 'Be';
names.sort(function(a, b){
	return b[1].indexOf(userKeyword) - a[1].indexOf(userKeyword);
});
document.write(JSON.stringify(names));