Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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 多维js数组排序_Javascript - Fatal编程技术网

Javascript 多维js数组排序

Javascript 多维js数组排序,javascript,Javascript,建议的重复答案无法解决问题 我有4个隐藏输入,其中值根据用户操作递增。Var Id获取每个输入值的Id,Var val获取其值 <input class="howmanyproducts" id="<?php echo $value; ?>" name="<?php echo $value; ?>" type="hidden" value="0"> 我需要根据val对这些值进行排序。因此,上面应该返回: 7, 8 3, 5 9, 2 8, 1 以下是我到目

建议的重复答案无法解决问题

我有4个隐藏输入,其中值根据用户操作递增。Var Id获取每个输入值的Id,Var val获取其值

<input class="howmanyproducts" id="<?php echo $value; ?>" name="<?php echo $value; ?>" type="hidden" value="0">
我需要根据val对这些值进行排序。因此,上面应该返回:

7, 8
3, 5
9, 2
8, 1
以下是我到目前为止的情况,希望这个问题有意义

$("#proddiv .howmanyproducts").each(function() {
    var id = this.id;
    var val = $(this).val();
    ids.push([id, +val]);
 });

    ids.sort(function(b, a) { return a[1] - b[1]; });
    $("#productorder").val(ids);
    $("#productscore").submit();
下面是我如何检索需要排序的表单数据

 $prodorder = $_POST['productorder'];
 $array2 = array_unique(explode(',', $prodorder));

我当前的代码根本没有改变订单

项,然后表单将提交。我想这是你的问题,我测试了你的排序函数,这是真的:

 var arr = [];
    arr.push([1, 3]);
    arr.push([2, 2]);
    arr.push([4, 8]);
    arr.push([0, 9]);
    arr.sort(function (b, a) { return a[1] - b[1]; });
    console.log(arr);

我相信您希望按照
val
值的降序对具有
id
val
属性的对象数组进行排序,对吗?如果是这样的话,我们将按照您的需要:

let A = [{id: 8, val: 1}, {id: 9, val: 2}, {id: 3, val: 5}, {id: 7, val: 8}]
A.sort((a, b) => a.val < b.val)
[{id: 7, val: 8}, {id: 3, val: 5}, {id: 9, val: 2}, {id: 8, val: 1}]
A=[{id:8,val:1},{id:9,val:2},{id:3,val:5},{id:7,val:8}]
A.排序((A,b)=>A.val
您发布的内容毫无疑问。您当前的代码看起来不错,有什么问题吗?对不起,更新了。嗯,那么提交中如何使用ID呢。您正在将它们存储在一个变量中。。。该变量与表单值无关。因此,看起来您正在对ID进行排序,但当您使用jquery提交函数时,它会从DOM元素提交数据。所以排序不会影响实际的元素。我需要使用each函数,因为ID是动态的。不过,您不需要在其中排序。所以您必须更改代码。提交必须在每次结束后进行。
let A = [{id: 8, val: 1}, {id: 9, val: 2}, {id: 3, val: 5}, {id: 7, val: 8}]
A.sort((a, b) => a.val < b.val)
[{id: 7, val: 8}, {id: 3, val: 5}, {id: 9, val: 2}, {id: 8, val: 1}]