Javascript 将数组排序为两个独立的动物名称数组,softAnimals和notSoftAnimals

Javascript 将数组排序为两个独立的动物名称数组,softAnimals和notSoftAnimals,javascript,arrays,Javascript,Arrays,正在努力编写一个函数,将此数组正确地排序为两个单独的数组。我不知道接下来该怎么做,我知道我可能需要使用sort方法,但我不知道如何正确地编写它,我只使用JS几个星期 let mixedUpAnimals = [ {name: 'chinchilla', soft: true}, {name: 'armadillo', soft: false}, {name: 'bear', soft: true}, {name: 'porcupine', soft

正在努力编写一个函数,将此数组正确地排序为两个单独的数组。我不知道接下来该怎么做,我知道我可能需要使用sort方法,但我不知道如何正确地编写它,我只使用JS几个星期

    let mixedUpAnimals = [
     {name: 'chinchilla', soft: true},
     {name: 'armadillo', soft: false},
     {name: 'bear', soft: true},
     {name: 'porcupine', soft: false},
     {name: 'hedgehog', soft: false},
     {name: 'honey badger', soft: false},
     {name: 'mouse', soft: true}
     ]
     for(var i = 0; i < mixedUpAnimals.length; i++){
     if (mixedUpAnimals[i].soft === true);
让mixedUpAnimals=[
{name:'chinchilla',soft:true},
{name:'armadillo',soft:false},
{name:'bear',soft:true},
{name:'豪猪',soft:false},
{name:'hedgehog',soft:false},
{name:'蜂蜜獾',soft:false},
{name:'mouse',soft:true}
]
对于(变量i=0;i
首先,您可以选择元素,然后选择元素(仅为了解排序和筛选方法而分别):

让mixedUpAnimals=[
{name:'chinchilla',soft:true},
{name:'armadillo',soft:false},
{name:'bear',soft:true},
{name:'豪猪',soft:false},
{name:'hedgehog',soft:false},
{name:'蜂蜜獾',soft:false},
{name:'mouse',soft:true}
]
mixedUpAnimals.sort(函数(a,b){
返回a.name>b.name;
});
var softAnimals=mixedUpAnimals.filter(函数(el){
返回el.soft});
var notSoftAnimals=mixedUpAnimals.filter(函数(el){
return!el.soft});
控制台日志(软动物);
console.log(notsoftanies);
您可以使用该方法

const mixedpanimals=[
{name:'chinchilla',soft:true},
{name:'armadillo',soft:false},
{name:'bear',soft:true},
{name:'豪猪',soft:false},
{name:'hedgehog',soft:false},
{name:'蜂蜜獾',soft:false},
{name:'mouse',soft:true}
];
const sortedAnimals=mixedUpAnimals.sort((a,b)=>(a.softconsole.log(sortedAnimals);
排序后,您也可以在一次迭代中进行分离

让mixedUpAnimals=[
{name:'chinchilla',soft:true},
{name:'armadillo',soft:false},
{name:'bear',soft:true},
{name:'豪猪',soft:false},
{name:'hedgehog',soft:false},
{name:'蜂蜜獾',soft:false},
{name:'mouse',soft:true}
],
sortCb=(x,y)=>x.name.localeCompare(y.name),
separate=A=>A.reduce((A,e)=>(e.soft&A.s | | A.ns).push(e,A),{s:[],ns:[]),
{s,ns}=separate(mixedpanimals.sort(sortCb));
console.log('Soft:',s);
console.log('Non-soft:',ns);
让mixedUpAnimals=[
{name:'chinchilla',soft:true},
{name:'armadillo',soft:false},
{name:'bear',soft:true},
{name:'豪猪',soft:false},
{name:'hedgehog',soft:false},
{name:'蜂蜜獾',soft:false},
{name:'mouse',soft:true}
]
让软动物=[];
不要让软动物=[];
mixedUpAnimals.map((项)=>{
item.soft?软体动物。推送(item):非软体动物。推送(item)
});
函数sortArrayOfObject(项目){
返回项目。排序((a,b)=>{
var nameA=a.name.toUpperCase();//忽略大小写
var nameB=b.name.toUpperCase();//忽略大小写
如果(nameAnameB)返回1;
返回0;
});
}
控制台日志(SortarayofObject(软动物))

控制台日志(SortarayofObject(非软件动物))
您描述的是筛选,而不是排序。排序是指按特定条件对列表进行排序。是的,我已还原了上次编辑。请不要编辑代码的含义。在
中,
是否有表示继续声明的意思。@AluanHaddad不会。但它会改变源数组。为了避免我们可以在之前
切片
,但这是可选的
const soft = mixedUpAnimals.filter(animal => animal.soft);
const notSoft = mixedUpAnimals.filter(animal => !animal.soft);