在javascript中基于相同的Id创建一个数组

时间:2017-02-15 10:09:34

标签: javascript jquery

这是一个示例请求对象。

"stories": [
{
  "ID": "1",
  "TRADER_ID": "38",
  "IMAGE": ""
},
{
  "ID": "2",
  "TRADER_ID": "38",
  "IMAGE": ""
},
{
  "ID": "3",
  "TRADER_ID": "40",
  "IMAGE": ""
},
{
  "ID": "4",
  "TRADER_ID": "40",
  "IMAGE": ""
},]
像这样我会有故事列表,我想基于相同的TRADER_ID创建一个数组。因为我需要添加一个图像幻灯片滑块,对于唯一的Traader Id我可以获取图像URL

2 个答案:

答案 0 :(得分:0)

您可以将ID用作数组的索引,将TRADER_ID用作数字,然后按numbres进行排序或查找元素(TRADER_ID)

答案 1 :(得分:0)

这是我所知道的疯狂,但有效。如果有人能够简化它,请执行:P

OP写道:" 我需要输出像[" 38"," 38"] [" 40&# 34;," 40"] "



var stories = [{
  "ID": "1",
  "TRADER_ID": "38"
}, {
  "ID": "2",
  "TRADER_ID": "38"
}, {
  "ID": "3",
  "TRADER_ID": "40"
}, {
  "ID": "4",
  "TRADER_ID": "40"
}];

(function change(array) {
    var ids = [];
    stories.forEach(v => ids.push(v.TRADER_ID));
    var sortedArr = [...new Set(Array.from(ids))];
    var newOne = [];
    var times = 0;
    var obj = {};
    var result = [];
    var cb = [];

    for (var i = 0; i < sortedArr.length; i++) {
      for (var j = 0; j < stories.length; j++) {
        if (stories[j].TRADER_ID == sortedArr[i]) {
          times++;
        }
      }
      obj.prop = sortedArr[i];
      obj.times = times;
      newOne.push(obj);
      obj = {};
      times = 0;
    }

    for (var k = 0; k < newOne.length; k++) {
      for (var l = 0; l < newOne[k].times; l++) {
        cb.push(newOne[k].prop);
      }
      result.push(cb);
      cb = [];
    }
    console.log(result);
  
})(stories);
&#13;
&#13;
&#13;