【发布时间】:2021-08-24 13:31:39
【问题描述】:
我已经编写了这段代码来根据用户输入对列表进行排序,但是如果用户添加了一个在输入之间包含空格的输入,则以下代码无法获取输出,我需要进行哪些更改才能获得正确的输出?我不想删除字符之间的空格。 例如:用户输入是“Man santra”,那么它应该对“Man”列表进行排序
var users = [{
name: 'Devgad Mango'
},
{
name: 'Mantra santra'
},
{
name: 'Prag Mango'
},
{
name: 'Pirate aam Mango'
}, {
name: 'Mango raw'
},
];
function search(input) {
const matches = [];
const remeinder = [];
users.forEach(user => {
user.name.startsWith(input) ?
matches.push(user) :
remeinder.push(user);
});
console.log(matches, remeinder)
// now we sort the matches
matches.sort((a, b) => {
const aa = a.name.toLowerCase();
const bb = b.name.toLowerCase();
if (aa < bb) {
return -1;
}
if (aa > bb) {
return 1;
}
return 0;
});
console.log(matches);
// now we want to push the remeinders to the end of the sorted array.
matches.push(...remeinder);
console.log(matches);
console.log(input);
}
const str = "*-*+&^%$#@!/\Man santra*";
var output = (str.replace(/[\/\\#@^!,+()&$~%.'":;*?`<>{}-]/g, ""));
search(output);
【问题讨论】:
-
可能是因为
user.name.startsWith(input),试试user.name.includes(input) -
您是指
input.includes(user.name)还是input.startsWith(user.name)而不是user.name.startsWith(input)?
标签: javascript json sorting compare string-comparison