0

This is for a line chart. Some values are available in the object "filteredTime" and need to fill "0" for unavailable values in the object.

for loop match with object values and push the output to the selected array. Object number of items are dynamic.

Expected outcome is 10 items Array. My output is 20 items array according to 2items in the object. Solution required for dynamic number of items in the object when looping.

let dataa = {
  datasets: [{ data: [] }],
};

let filteredTime = { 4: "13.50", 7: "12.50" };

for (let step = 1; step <= 10; step++) {
  for (var i in filteredTime) {
    if (step != i) {
      dataa["datasets"].map((filteredPerson) => {
        filteredPerson.data.push(0);
      });
    } else {
      dataa["datasets"].map((filteredPerson) => {
        filteredPerson.data.push(filteredTime[i]);
      });
    }
  }
}

Output

Array(20): [0, 0, 0, 0, 0, 0, 0, "12.50", 0, 0, 0, 0, "13.50", 0, 0, 0, 0, 0, 0, 0]

"filteredTime" Object items number are dynamic.

Expected Output:

Array(10): [0, 0, 0, "12.50", 0, 0, "13.50", 0, 0, 0, ]

2 Answers 2

1

Using Array.from()

let filteredTime = { 4: "13.50", 7: "12.50" }

let result = Array.from({length: 10}, (v, i) => filteredTime[i + 1] || 0)

console.log(result)

Sign up to request clarification or add additional context in comments.

Comments

0
let dataa = {
  datasets: [{ data: [] }],
};

let filteredTime = { 4: "13.50", 7: "12.50" };

  for(let i=1;i<=10;i+=1){
    if(!filteredTime[i]){
      dataa.datasets[0].data.push(0)
   }else{
      dataa.datasets[0].data.push(filteredTime[i])
  }

}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.