【问题标题】:Push same multiple objects into multiple arrays based on another value from object根据来自对象的另一个值将相同的多个对象推送到多个数组中
【发布时间】:2019-08-20 22:31:22
【问题描述】:

这是对Push same multiple objects into multiple arrays 的再次跟进。

创建对象后:

let objName = ["object1", "object2", "object3"];
let xyzArr = ["xyz1", "xyz2", "xyz3"];
let theArr = [[], [], []];
let objects = [];

objName.forEach((name, index) => {
  objects.push({
    xyz: xyzArr[index],
    arr: theArr[index]
 });
});

并使用@NickParsons 解决方案推送值:

$.getJSON(json, result => {
  result.forEach(elem => {
   objects.forEach(obj => {
     obj.arr.push({
       x: elem.date,
       y: elem.val2
     });
   });
  });
 });

我在这里添加我的对象,即 x 和 y 不基于任何条件。但我想根据if indexOf(obj.xyz) = elem.val1添加它。

这是我的 JSON:

  [
{
    "date": "2019-07-21",
    "val1": "xyz1_hello",
    "val2": 803310
},
{
    "date": "2019-07-22",
    "val1": "xyz2_yellow",
    "val2": 23418
},
{
    "date": "2019-07-22",
    "val1": "xyz1_hello",
    "val2": 6630
},
{
    "date": "2019-07-24",
    "val1": "xyz2_yellow",
    "val2": 4
},
{
    "date": "2019-07-21",
    "val1": "xyz3_yo",
    "val2": 60984
}
]

如果obj.xyz is LIKE (indexOF) elem.val1 例如if indexOf(obj.xyz) = elem.val1,我有没有办法将值推送到x and y,然后将它们对应的elem.dateelem.val2 数据推送到obj.arr

【问题讨论】:

  • 您的解释有点难以理解。也许添加来自源 a/b 的示例和所需的输出?
  • 我做了一些改变。我试图解释我能做到的最好的

标签: javascript arrays json


【解决方案1】:

假设您有一些布尔 like(a,b) 函数来确定两个值是否相似,并且您的元素在 elems 中:

objects.forEach(o => 
  elems.forEach(e => {
    if(like(o.xyz, e.val1)){
      o.arr.push({
        x: e.date,
        y: e.val2
      });
    }
  }));

【讨论】:

    猜你喜欢
    • 2019-12-25
    • 2017-03-02
    • 1970-01-01
    • 1970-01-01
    • 2020-04-17
    • 1970-01-01
    • 2022-01-14
    • 2020-08-23
    • 2019-12-22
    相关资源
    最近更新 更多