Javascript 多维js数组排序
建议的重复答案无法解决问题 我有4个隐藏输入,其中值根据用户操作递增。Var Id获取每个输入值的Id,Var val获取其值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 以下是我到目
<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}]