如何解决如何订购元素并更改属性?
如果要重复元素,必须如何添加数字(1,2,3,4 ...),我该如何排序元素并且不重复属性“ d”?
let miArray = [{auto:'1',d:'a'},{car:'1',d:'b'},{metro:'1',d:'c'},{susuki:'1',d:'d'},{bus:'1',d:'e'},d:'f'}]
let pivot = 1
let cont = 0
let unitaries = []
function burbuja(arreglo){
for(i=0;i<(arreglo.length-1);i++)
for(j=0;j<(arreglo.length-i);j++){
if(arreglo[j+1] !=undefined && arreglo[j].car>arreglo[j+1].car){
aux=arreglo[j];
arreglo[j]=arreglo[j+1];
arreglo[j+1]=aux;
}
}
return arreglo
}
console.log(burbuja(miArray))
在我的示例中,存在两个带有d:'b'的元素,它们属于“ car”:1。
然后,第一个元素应为d:'b1',第二个元素应为d:'b2'
解决方法
似乎您只有一个密钥d
要为其识别重复项。如果是这样,可以这样进行:
a)首先根据d
b)遍历数组,发现重复项时,增加可以附加到对象的增量键。
c)然后变换数组以将键d更新为d = d +增量,并删除增量键。
代码:
function burbuja(arr) {
arr.sort((a,b)=>(a.d-b.d));
inc = 1;
for ( i = 1; i < arr.length; i++ ) {
while (i < arr.length && arr[i].d === arr[i-1].d ) {
arr[i-1].inc = inc;
arr[i].inc = inc+1;
i++;
inc++;
}
inc = 1;
}
arr.map(x => {x.d = x.inc ? x.d + String(x.inc) : x.d; delete x.inc;});
}
let miArray = [{auto:'1',d:'a'},{car:'1',d:'b'},{metro:'1',d:'c'},{susuki:'1',d:'d'},{bus:'1',d:'e'},d:'f'}]
burbuja(miArray);
console.log(miArray);
或者您可以只编写两个映射函数:
let miArray = [{auto:'1',d:'f'}]
inc = 1;
miArray.sort((a,b)=>(a.d-b.d));
miArray.map( (content,index,arr) => {
if ( index > 0 && arr[index-1].d == arr[index].d ) {
arr[index-1].inc = inc;
arr[index].inc = inc+1;
inc++;
} else {
inc = 1;
}
})
miArray.map(x => {x.d = x.inc ? x.d + String(x.inc) : x.d; delete x.inc;});
console.log(miArray);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。