javascript - 以相应的 JavaScript 方式对相关数组进行排序

标签 javascript arrays json sorting

我正在尝试处理 JSON 对象并进行数学计算来计算权重。顺序在我的算法中很重要,但 JSON 对象中的产品顺序会按照客户将其添加到购物车的顺序传递给我。我需要以相同的方式对许多属性进行排序。

在以下示例中,客户以“错误”(1.5,1,1.25) 的顺序添加了产品,因此 object.products 如下所示:

"products":[
{
  "quantity": 3,
  "weight_each": 1.5
},
{
  "quantity": 4,
  "weight_each": 1
},
{
  "quantity": 2,
  "weight_each": 1.25
}

我的第一步是将这些对象添加到更键盘友好的数组中:

for (var i = 0; i < object.products.length; i++)
{
  quantity[i] = object.products[i].quantity;
  weight[i] = object.products[i].weight_each;
}

如前所述,我的算法要求产品按重量排序(升序)。我知道如何独立地对每个数组进行排序 [weight.sort()],但我不知道如何对每个数组进行排序,以便排序后,weight[0] 和 amount[0] 引用相同的产品。

我的最终结果应该如下所示:

console.log(weight)   // [1,1.25,1.5]
console.log(quantity) // [4,2,3]

我用谷歌搜索了许多不同的短语并尝试了几种不同的方法。如果这个问题已经得到解答,或者这是一个基本问题,我深表歉意。我似乎无法独自克服这个障碍,非常感谢所有答案! :)

最佳答案

在将 quantityweight_each 分成两个未连接的数组之前,对 weight_each 上的 products 数组进行排序:

input = '{"products":[{"quantity":3,"weight_each":1.5},{"quantity":4,"weight_each":1},{"quantity":2,"weight_each":1.25}]}';

data = JSON.parse( input );

data.products.sort( function(a,b){return a.weight_each - b.weight_each; } );

for ( var i = 0; i < data.products.length; i++)
{
  quantity[i] = data.products[i].quantity;
  weight[i]   = data.products[i].weight_each;
}

关于javascript - 以相应的 JavaScript 方式对相关数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21081626/

相关文章:

javascript - 填充隐藏的 div,完成后显示 div

java - 如何在一个类中创建对象并将它们保存在另一个类的数组中?

php - 如何合并两个数组,但在日期常见的地方合并它们

json - JSON 模式中的变量属性

javascript - 如果浏览器,使用 Javascript?

javascript - 延迟加载时取消页面请求

javascript - 如何在博主博客的帖子标题下方显示 AdSense 广告,以便它甚至可以在移动版博主上运行?

javascript - 求和特定数组值取决于其他数组的索引值列表

java - java中的列表字符串列表

javascript - localStorage中的JS数据仅保存在一个键,值对中