Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
迭代时对对象数组排序-JavaScript_Javascript_Arrays - Fatal编程技术网

迭代时对对象数组排序-JavaScript

迭代时对对象数组排序-JavaScript,javascript,arrays,Javascript,Arrays,我有一个对象数组,我正在迭代并推送到一个新数组。 我还希望新数组将按特定值排序(不使用.sort()) 排列 想要的结果 arr2 = [ {name: "one", value: 2}, {name: "two", value: 12}, {name" "three", value: 16} ] 尝试 合并是一种不使用sort()进行排序的好方法 arr1=[ {名称:“三”,值:16}, {名称:“一”,值:2}, {名称:“两个”,值:12} ] 控制台日志(合并排序

我有一个对象数组,我正在迭代并推送到一个新数组。
我还希望新数组将按特定值排序(不使用.sort()) 排列

想要的结果

arr2 = [
   {name: "one", value: 2},
   {name: "two", value: 12},
   {name" "three", value: 16}
]
尝试


合并是一种不使用sort()进行排序的好方法

arr1=[
{名称:“三”,值:16},
{名称:“一”,值:2},
{名称:“两个”,值:12}
]
控制台日志(合并排序(arr1))
函数合并排序(arr)
{
如果(arr.length<2)
返回arr;
var middle=parseInt(arr.length/2);
var left=arr.slice(0,中间);
var right=arr.slice(中间,arr.length);
返回merge(mergeSort(左)、mergeSort(右));
}
函数合并(左、右)
{
var结果=[];
while(left.length&&right.length){

if(左[0]。值与单个值进行比较是行不通的,因为下一个值可能在前面的元素之间。排序是一个非常复杂的问题,计算机科学对此进行了广泛的研究。如果不想接触原始数组,只需在排序之前克隆它即可:

arr1=[
{名称:“三”,值:16},
{名称:“一”,值:2},
{名称:“两个”,值:12}
]
arr2=[…arr1].sort((a,b)=>a.value-b.value);

log(arr2);
只需根据值对数组进行排序

const arr1=[
{名称:“三”,值:16},
{名称:“一”,值:2},
{name:“two”,value:12},
];
const output=arr1.sort((a,b)=>a.value-b.value);

console.log(output);
我将研究排序算法,因为您只查看第一个索引,不起作用。请尝试克隆此数组,并为新数组编写一个比较器,使其保持不变。
arr2 = [
   {name: "one", value: 2},
   {name: "two", value: 12},
   {name" "three", value: 16}
]
arr1.forEach(item => {
if (arr2.length) {
   const lastObj = arr2[arr2.length - 1];
   if (item.value > lastObj.value) {
     arr2.push(item)
   } else {
    arr2.unshift(item)
   }
} else {
 arr2.push(item)
}
})