Мне нужно подставить в литерал объекта myData
те элементы, которые принадлежат group
B и с year
, совпадающими с найденными в group
A:
var myData = [{"year":1,"group":"A","value":0.1},
{"year":2,"group":"A","value":0.2},
{"year":3,"group":"A","value":0.2},
{"year":4,"group":"A","value":0.1},
{"year":5,"group":"A","value":0.1},
{"year":1,"group":"B","value":0.1},
{"year":2,"group":"B","value":0.2},
{"year":3,"group":"B","value":0.2},
{"year":4,"group":"B","value":0.2},
{"year":5,"group":"B","value":0.9},
{"year":6,"group":"B","value":0.1}] ;
Я могу использовать .filter()
, чтобы получить желаемый результат:
mySubset = myData.filter((d) => {return d.group == "B" && d.year < 6;});
в результате:
[{"year":1,"group":"B","value":0.1},
{"year":2,"group":"B","value":0.2},
{"year":3,"group":"B","value":0.2},
{"year":4,"group":"B","value":0.2},
{"year":5,"group":"B","value":0.9}];
Но это не идеально. Я хочу универсальное универсальное решение, которое не зависит от «ручного» ввода максимального значения (6). Кроме того, year
может не быть последовательностью (например, [2, 1, 4, 5]
).
По сути, препятствие находится во второй части условия (d.year < 6
). Мне нужно что-то, что соответствует значениям, найденным в:
let x = []
for(i = 0; i < myData.filter((d) => {return d.group == "A";}).length; i++){
x.push(myData[i].year);
}
Спасибо!