Javascript 如何返回具有';猫';第一和';水';介于';猫';和';狗;?
到目前为止,我所拥有的:Javascript 如何返回具有';猫';第一和';水';介于';猫';和';狗;?,javascript,arrays,Javascript,Arrays,到目前为止,我所拥有的: var separate = [cats, water, dogs]; separate.sort(function(cats, water, dogs) {return cats-water-dogs}); 问题: 狗和猫相处不好,猫和狗也相处不好 他们两人的共同点是他们不喜欢水(洗澡) 给定一个“dogs”、“cats”和“water”数组,编写一个名为separate的函数,该函数返回一个新数组,以便通过water将狗和猫分开。确保猫总是排在第一位 您可以假设阵
var separate = [cats, water, dogs];
separate.sort(function(cats, water, dogs) {return cats-water-dogs});
问题:
狗和猫相处不好,猫和狗也相处不好
他们两人的共同点是他们不喜欢水(洗澡)
给定一个“dogs”、“cats”和“water”数组,编写一个名为separate
的函数,该函数返回一个新数组,以便通过water将狗和猫分开。确保猫总是排在第一位
您可以假设阵列将始终至少包含三个元素,并且始终至少有一只狗、一只猫和一杯水可供使用
Examples:
separate(['dog','cat','water']) // ['cat','water','dog']
separate(['dog','cat','water','cat']) // ['cat', 'cat', 'water', 'dog'])
separate(['cat','cat','water','dog','water','cat','water','dog'])
// ['cat','cat','cat','water','water','water','dog','dog']
separate(
['cat','cat','cat','cat','cat',
'cat','cat','cat','cat','cat','cat',
'cat','cat','cat','cat','cat','cat','cat',
'dog','water','water','water','water','water',
'water','water','water','water','water','water',
'water','water','water'
])
// ['cat','cat','cat','cat','cat',
'cat','cat','cat','cat','cat','cat',
'cat','cat','cat','cat','cat','cat','cat',
'water','water','water','water','water',
'water','water','water','water','water','water',
'water','water','water', 'dog']
您应该使用功能
排序
,并将狗值移动到最后一个位置,如下所示:
- 当
返回a=='dog'
时,因为dog应该在末尾1
- 当
返回b===“dog”
,因为-1
的值应该在a
之前b
让arr=['cat','cat','cat','cat','cat','cat','cat',',
‘猫’、‘猫’、‘猫’、‘猫’、‘猫’、‘猫’、‘猫’,
‘猫’、‘猫’、‘猫’、‘猫’、‘猫’、‘猫’、‘猫’、‘猫’,
“狗”,“水”,“水”,“水”,“水”,“水”,“水”,
“水”,“水”,“水”,“水”,“水”,“水”,“水”,
"水","水","水",;
让结果=arr.sort((a,b)=>{
如果(a==‘狗’)返回1;
如果(b=='dog')返回-1;
否则返回a.localeCompare(b);//cat始终在开头。
});
控制台日志(结果)代码>
。作为控制台包装{max height:100%!important;top:0;}
这里,我们使用一种自定义排序算法进行排序,该算法可以理解狗、猫和水的区别
//使用此选项分配一个值0,1,2以拆分它们
常量重量=(a)=>(a==‘狗’)?0:(a==‘水’)?1 : 2;
//我们这一类将使用重量
常数sortItem=(a,b)=>重量(a)-重量(b);
const separate=(arr)=>arr.sort(sortItem);
console.log(单独的(['dog','cat','water']);//[‘猫’、‘水’、‘狗’]
console.log(单独的(['dog','cat','water','cat']);//[‘猫’、‘猫’、‘水’、‘狗’])
日志(单独的(['cat','cat','water','dog','water','cat','water','dog'])代码>向上
让arr=['cat','cat','cat','cat','cat','cat','cat',',
‘猫’、‘猫’、‘猫’、‘猫’、‘猫’、‘猫’、‘猫’,
‘猫’、‘猫’、‘猫’、‘猫’、‘猫’、‘猫’、‘猫’、‘猫’,
“狗”,“水”,“水”,“水”,“水”,“水”,“水”,
“水”,“水”,“水”,“水”,“水”,“水”,“水”,
"水","水","水",;
让结果=arr.sort((a,b)=>{
如果(a==‘狗’)返回1;
如果(b=='dog')返回-1;
否则返回a.localeCompare(b);//cat始终在开头。
});
控制台日志(结果)
sort.sort
回调只接受两个参数,而不是3Hi-Kevin,我建议您阅读Array.sort,如果您需要帮助,请尝试编写答案: