gpt4 book ai didi

javascript - 排序和合并数组

转载 作者:行者123 更新时间:2023-11-28 17:11:19 25 4
gpt4 key购买 nike

我必须合并两个数组并根据比较创建的值进行排序。我不想使用任何内置的 js 函数,例如排序。我尝试使用 while 循环但无法找出确切的解决方案。这是我的示例代码:

function merge(a, b, n, m)  
{
res = [];
i = 0; j = 0; k = 0;
while(i < n && j < m) {
if(a[i]['created'] < b[j]['created']) {
res.push(a[i]);
i++;
} else {
res.push(b[j]);
j++;
}
}

while(i < n) {
res.push(a[i]);
i++;
}

while(j < m) {
res.push(b[j]);
j++;
}
return res;
}

a = [{'title':'title1', 'created':'18'},{'title':'title2', 'created':'16'},{'title':'title3', 'created':'20'}];
b = [{'title':'title4','created':'17'},{'title':'title5','created':'19'}];
n = a.length;
m = b.length;

var endResult = merge(a, b, n, m);
console.log(endResult);

我的预期输出应如下:

[{'title':'title2', 'created':'16'},{'title':'title4','created':'17'},{'title':'title1', 'created':'18'},{'title':'title5','created':'19'},{'title':'title3', 'created':'20'}];

请让我知道我在这里错过了什么。

注意:我不想使用内置的 Javascript 函数,例如 sort()。我必须根据特定的业务逻辑对值进行排序,我将在弄清楚基本排序后实现它。

最佳答案

一个简单的 O(n^2) 解决方案是循环遍历所有元素寻找最低值,然后再次循环所有元素寻找第二低值,依此类推。

function mergeSort(a, b) {
var array = a.concat(b);
var length = array.length;
var results = [];
while(results.length < length) {
var currentLowest = 0;
for(var i = 1; i < array.length; i++) {
if(array[i].created < array[currentLowest].created) {
currentLowest = i;
}
}
results.push(array[currentLowest]);
array.splice(currentLowest,1);
}
return results;
}

a = [{'title':'title1', 'created':'18'},{'title':'title2', 'created':'16'},{'title':'title3', 'created':'20'}];
b = [{'title':'title4','created':'17'},{'title':'title5','created':'19'}];

var endResult = mergeSort(a,b);
document.getElementsByTagName('p')[0].innerHTML = JSON.stringify(endResult);
<p></p>

关于javascript - 排序和合并数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54335712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com