Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.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/3/arrays/13.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_String_Sorting - Fatal编程技术网

Javascript对标题数组的排序方式与根据数据数组的排序方式相同

Javascript对标题数组的排序方式与根据数据数组的排序方式相同,javascript,arrays,string,sorting,Javascript,Arrays,String,Sorting,我在javascript中有一个排序问题,我需要对一个数组进行排序,并对标题(保存在另一个数组中)进行相同的排序(降序),如何以相同的方式进行排序 为了让我的文章更清晰,我将把它简化为一个基本的例子: var arr = Array(9, 5, 11, 2, 3); var arrCaptions = Array("some text","another bit of text","three", "four?", "maybe five?"); 现在我想运行一种排序机制,以与arr数组相同的

我在javascript中有一个排序问题,我需要对一个数组进行排序,并对标题(保存在另一个数组中)进行相同的排序(降序),如何以相同的方式进行排序

为了让我的文章更清晰,我将把它简化为一个基本的例子:

var arr = Array(9, 5, 11, 2, 3);
var arrCaptions = Array("some text","another bit of text","three", "four?", "maybe five?");
现在我想运行一种排序机制,以与arr数组相同的方式对arrCaptions数组进行排序,因此您将得到以下结果:

var arrResult = Array(11, 9, 5, 3, 2);
var arrCaptionsResult = Array("three", "some text" ,"another bit of text", "maybe five?", "four?");
到目前为止,我所尝试的根本不起作用:

var numlist = Array(9, 5, 11, 2, 3);
var list = Array("four?","maybe five?","another bit of text","some text","three");

var resultnumlist = Array();
var resultlist = Array();

resultnumlist[0] = numlist[0];
resultlist[0] = list[0];

for (i = 0; i < list.length; i++) {
     var i2 = list.length - 1;
     while (numlist[i] < resultnumlist[i2]) {
        i2--;
     }
     resultnumlist.splice(i2 - 1,0,numlist[i]);
     resultlist.splice(i2 - 1,0,list[i]);
}
var numlist=Array(9,5,11,2,3);
变量列表=数组(“四个?”,“可能五个?”,“另一个文本位”,“一些文本”,“三个”);
var resultnumlist=Array();
var resultlist=Array();
resultnumlist[0]=numlist[0];
结果列表[0]=列表[0];
对于(i=0;i
将它们捆绑在一个对象中

var stuff = [{
    id: 9,
    text: "text hello"
}, {
    id: 5,
    text: "text world"
}, {
    id: 11,
    text: "text test"
}, {
    id: 2,
    text: "text 23"
}];

stuff.sort( function( a, b ) {
     return a.id - b.id; //Objects are sorted ascending, by id.
});
结果是:

[{
    "id": 2,
    "text": "text 23"
}, {
    "id": 5,
    "text": "text world"
}, {
    "id": 9,
    "text": "text hello"
}, {
    "id": 11,
    "text": "text test"
}]

把它们合并成一个数组怎么样?然后,您可以根据数字的值对该数组进行排序,标题将按顺序进行排序:

//Your arrays
var arr = [9, 5, 11, 2, 3];
var arrCaptions = ["some text", "another bit of text", "three", "four?", "maybe five?"];

//The composite array
var composite = arr.map(function(v, i) {
    return {
        rank: v,
        caption: arrCaptions[i]
    };
});

//Sort this array
composite.sort(function(a, b) {
    return a.rank - b.rank;
});

console.log(composite);

这是一个演示:

这是您修改过的代码:

  var numlist = Array(9, 5, 11, 2, 3);
  var list = Array("nine?","maybe five?","another bit of 11","some 2","three");

  var resultnumlist = new Array();
  var resultlist = new Array();

  for (i = 0; i < list.length; i++) {
       var i2 = resultnumlist.length - 1;
       while ((numlist[i] < resultnumlist[i2]) && (i2 >= 0)) {
          i2--;
       }
       i2++;
       resultnumlist.splice(i2, 0, numlist[i]);
       resultlist.splice(i2, 0, list[i]);
  }
  console.log(resultlist);
  console.log(resultnumlist);
var numlist=Array(9,5,11,2,3);
var list=数组(“9?”,“可能5?”,“11的另一位”,“大约2”,“3”);
var resultnumlist=新数组();
var resultlist=新数组();
对于(i=0;i=0)){
i2--;
}
i2++;
剪接(i2,0,numlist[i]);
结果列表拼接(i2,0,列表[i]);
}
console.log(结果列表);
console.log(resultnumlist);

虽然您已经选择了答案,但如果您能解释一下您尝试构建的逻辑,我可以帮助您修复代码。您是否只是试图在每次运行中找到最低的数字,然后将其插入到结果数组中?如果是这样,请检查:是的,这就是我尝试的,我检查了您的代码,这实际上是我想要看到的。:)只是用一种错误的方式编辑它,尽管我找不到自己的错误……我的逻辑如下:从最后一个元素开始(如果算法运行良好,这将是最低的),循环遍历结果数组,直到当前值大于结果数组索引,然后记住该索引的编号。然后,我将在该索引处插入新元素的值,就像我对值的标题所做的那样。理论上,结果将是一个完美排序的数组:PMy错误出现在i2++和while循环中,如果我用一个例子从逻辑上想出来,我现在就犯了错误。所以现在我不仅找到了解决办法,而且学到了新的东西,知道了自己的错,这对我来说更重要:)非常感谢!