【发布时间】:2017-08-01 13:09:37
【问题描述】:
我已经制作了这种插入排序算法,如果您在第二个循环中删除.name,它可以很好地处理数字/字符串。虽然我不能让它与一组对象一起工作? (我什至尝试了几次桌面检查,但我仍然无法找出问题所在......)
function insertSortByName(d) {
const len = d.length - 1;
let output = d;
for(let sorted = len; sorted >= 0; sorted--) {
for(let key = sorted-1; output[key].name > output[key+1].name; key++) {
output = swapArrayVal(output, key, key+1);
}
}
return output;
}
function swapArrayVal(arr, pos1, pos2) {
let tempVal = arr[pos1];
arr[pos1] = arr[pos2];
arr[pos2] = tempVal;
return arr;
}
这可以使用示例数组运行:
insertSortByName([ {name: 'z'}, {name: 'm'}, {name: 'a'} ]);
/* Should return: [ {name: 'a'}, {name: 'm'}, {name: 'z'}] */
【问题讨论】:
-
您正在读取数组末尾。您的内部循环中缺少停止条件。
标签: javascript arrays sorting insertion-sort