Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Перебор массива с объектами (https://javascript.ru/forum/dom-window/80567-perebor-massiva-s-obektami.html)

ureech 22.06.2020 06:48

Перебор массива с объектами
 
Привет.
res = Array[{...}{...}{...}]
0: Object { to_fact_hip: "10.00", to_fact_neck: "30.00", to_fact_weist: "20.00", … }
1: Object { to_fact_hip: "10.00", to_fact_neck: "30.00", to_fact_weist: "20.00", … }
2: Object { to_fact_hip: "0.00", to_fact_neck: "0.00", to_fact_weist: "0.00", … }

Пытаюсь из этого сделать что то такое:
0:Object{name:to_fact_hip, data:Array[10,10,0]
1:Object{name:to_fact_neck, data:Array[30,30,0]
......

Весь мозг забил этими объектами).
Например получил названия ключей.
var obj =[];
res.map((o) => {
obj = Object.keys(o);
});

Перебираю массив
for (let key in res) {
let subobj = res[key];//Здесь у меня три объекта
}
А вот что дальше не могу понять.Пробовал через for
for(j=0;j<obj.length;++j){
        for(i=0;i<res.length;i++){ 
           arr[j] = +res[i][obj[j]];
        a[j] = {name:obj[j],data:arr[j]}
        }
}

Не получается.Как собрать такой массив?Help!

рони 22.06.2020 07:39

ureech,
<script>
function fn(arr)
{  let keys = Object.keys(arr[0]), obj = {};
   keys.forEach(k => obj[k] = []);
   arr.forEach(a => keys.forEach(k => obj[k].push(+a[k])));
   return keys.map(k => ({name : k,  data : obj[k]}))
}
let res = [{ to_fact_hip: "10.00", to_fact_neck: "30.00", to_fact_weist: "20.00"},
{ to_fact_hip: "10.00", to_fact_neck: "30.00", to_fact_weist: "20.00"},
{ to_fact_hip: "0.00", to_fact_neck: "0.00", to_fact_weist: "0.00"}]
let totall = fn(res)
document.write(JSON.stringify(totall, "", 4))

</script>

ureech 22.06.2020 10:10

рони,
Благодарю. Сам бы я точно такое не сотворил.Пойду разбираться).Спасибо,ещё раз).


Часовой пояс GMT +3, время: 04:56.