如何按字符串值对数组进行排序?
如果我有一个像['you', 'I', 'me', 'me', 'will', 'me']
这样的数组,怎样才能在数组的前面得到所有带有me
字样的索引?
我尝试过使用array.sort,但它似乎没有用。
e.target.value是我从dom中的<select
元素获得的值。
arr.sort((a, b) => {
if (a < e.target.value) {
return -1;
}
if (a > e.target.value) {
return 1;
}
return 0;
});
更新: Yury的答案非常有效,但是如果我需要在一个对象数组中匹配两个值并将它们排序,那该怎么办呢?
示例:
arr = [
{id: 1, name: "cookie"},
{id: 2, name: 'foo'},
{id: 3, name: 'bar'},
{id: 2, name: 'foo'}
];
如何在数组前面放置id为'2'且名称为'foo'的所有元素?
答案 0 :(得分:4)
您可以使用排序
let a = ['you', 'I', 'me', 'me', 'will', 'me'];
a.sort((a, b) => a !== b && b === 'me' ? 1 : 0);
console.log(a)
答案 1 :(得分:0)
const arr = [
{id: 1, name: "cookie"},
{id: 2, name: 'foo'},
{id: 3, name: 'bar'},
{id: 2, name: 'foo'}
];
使用Array.prototype.sort()
上的arr
方法使用回调函数,只有当第一个项目与给定条件不匹配且第二个条件符合时,才会切换项目的顺序。
arr.sort((item1, item2) => {
if((item1.id !== 2 || item1.name !== 'foo') && (item2.id === 2 || item2.name === 'foo')) {
return 1;
}
return 0;
});
console.log(arr);