js数组怎么按属性值为字符串的元素排序?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js数组怎么按属性值为字符串的元素排序?相关的知识,希望对你有一定的参考价值。
如:array=【
name:“张三”,
name:“李四”),
name:“王五”
】
怎样将array按name排序
let oldArr = [name:"张三",name:"李四",name:"王五"];
let newArr1 = new Array(oldArr.length);
for(i = 0 ; i < oldArr.length; i++)
newArr1[i] = oldArr[i].name;
newArr1.sort();
let newArr2 = new Array();
for(i=0;i<newArr1.length;i++)
for(j=0;j<oldArr.length;j++)
if(newArr1[i] == oldArr[j].name)
newArr2.push(oldArr.splice(j,1));
// 最后这个newArr2就是你要的排序后结果
// 注意:原来的oldArr此时应该成为一个空数组了追问
newArr1.sort();是无效的,并不能将newArr1按拼音排序,而且我虽然只写了name一个属性,但是并不一定只有name,如果有重名怎么办
追答你应该看到,我使用的是splice这个函数,就是为了当有重复时,会首先删除第一个找到的对应对象,并将他追加至newArr2中,那么在此查询找到的就是第二个对象了。你若是了解的话,应该知道splice是如何操作的。
至于你说数组内元素对象可能包含多个属性(如:name:"zhangsan",sex:"nan"),这不会对此段代码有任何影响,因为我判断用的时name属性值,而添加之结果数组的是整个对象。
最后,你说sort方法无效,因为你并没有说明是按照何种规则排序,所以我用了sort这个函数;你也可以自定义一个排序方法,或者直接使用sort(function())来实现。
希望采纳
以上是关于js数组怎么按属性值为字符串的元素排序?的主要内容,如果未能解决你的问题,请参考以下文章