vardata=[{eid:'cat',name:'aa'},{eid:'cat',name:'bb'},{eid:'dog',name:'cc'},{eid:'cat',name:'dd'},{eid:'pig',name:'ee'},{eid:'cat',name:'ff'},{eid:'dog',name:'gg'}]functiontrans(data){letcache={}//cache存儲的鍵是eid,值是這個eid在indices數(shù)組中的下標letindices=[]//數(shù)組中的每一個值是一個數(shù)組,數(shù)組中的每一個元素是原數(shù)組中相同eid的下標data.forEach((item,i)=>{leteid=item.eidletindex=cache[eid]if(index!==undefined){indices[index].push(i)}else{cache[eid]=indices.lengthindices.push([i])}})/***此時,cache:{cat:0,dog:1,pig:2}*indices:[[0,1,3,5],[2,6],[4]]*indices中的第1項是eid為cat的數(shù)組下標*indices中的第2項是eid為dog的數(shù)組下標*indices中的第3項是eid為pig的數(shù)組下標*/letresult=[]indices.forEach(item=>{item.forEach(index=>{result.push(data[index])//依次把index對應的元素data[index]添加進去即可})})returnresult}letresult=trans(data)console.log(result)你的問題里面有個不明確的地方,比如下面這個例子:vardata=[{eid:'dog',name:'aa'},{eid:'cat',name:'bb'},{eid:'dog',name:'cc'}]你是想輸出1:[{eid:'dog',name:'aa'},{eid:'dog',name:'cc'},{eid:'cat',name:'bb'}]還是想輸出2:[{eid:'cat',name:'bb'},{eid:'dog',name:'aa'},{eid:'dog',name:'cc'}]輸出1是按照出現(xiàn)的先后順序排列的,輸出2是按照字母序排列的,我給的是輸出1的函數(shù),如果想要輸出2的結(jié)果,可以參考樓上。