Leo*_*oni 6 javascript sorting
我需要帮助整理一些数据.假设我在搜索字段中输入"piz".我得到的回报和数组包含所有包含"piz"的条目.
我现在想按以下顺序显示它们:
pizza
pizzeria
apizzetto
berpizzo
Run Code Online (Sandbox Code Playgroud)
首先是我按字母顺序键入的项目,然后是按字母顺序键入的内容.
相反,如果我按字母顺序排序,我得到以下内容
apizzetto
berpizzo
pizza
pizzeria
Run Code Online (Sandbox Code Playgroud)
有谁知道如何做到这一点?谢谢你的帮助.
jfr*_*d00 10
您可以将数据拆分为两个数组,一个以输入开头,另一个不输入.单独排序,然后结合两个结果:
var data = [
'pizzeria',
'berpizzo',
'apizzetto',
'pizza'
];
function sortInputFirst(input, data) {
var first = [];
var others = [];
for (var i = 0; i < data.length; i++) {
if (data[i].indexOf(input) == 0) {
first.push(data[i]);
} else {
others.push(data[i]);
}
}
first.sort();
others.sort();
return(first.concat(others));
}
var results = sortInputFirst('piz', data);
Run Code Online (Sandbox Code Playgroud)
你可以在这里看到它的工作:http://jsfiddle.net/jfriend00/nH2Ff/
正确的完整解决方案是:
var data = [
'pizzeria',
'berpizzo',
'apizzetto',
'pizza'
];
var _sortByTerm = function (data, term) {
return data.sort(function (a, b) {
return a.indexOf(term) < b.indexOf(term) ? -1 : 1;
});
};
var result = _sortByTerm(data, 'piz');
Run Code Online (Sandbox Code Playgroud)
如果要对象排序,请使用以下功能:
var _sortByTerm = function (data, key, term) {
return data.sort(function (a, b) {
return a[key].indexOf(term) < b[key].indexOf(term) ? -1 : 1;
});
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3468 次 |
| 最近记录: |