0

Raw array

myArr = [
{name:'abcd',values:[undefined,{quarter: "Q2-2016", koordinaten: 119},{quarter: "Q3-2016", koordinaten: 129},undefined]},
{name:'abcd',values:[undefined,undefined,{quarter: "Q4-2016", koordinaten: 19},undefined]}
]

Expected array,

 myArr = [
        {name:'abcd',values:[{quarter: "Q2-2016", koordinaten: 119},{quarter: "Q3-2016", koordinaten: 129}},
        {name:'abcd',values:[{quarter: "Q4-2016", koordinaten: 19}]}
        ]

i want to remove undefined element with index in result array,

abdul
  • 1
  • 2

4 Answers4

0

Try map and filter

myArr.map( s => (s.values = s.values.filter( p => JSON.stringify(p) != "{}" ), s ) );

Demo

var myArr = [
{name:'abcd',values:[{undefined},{quarter: "Q2-2016", koordinaten: 119},
{quarter: "Q3-2016", koordinaten: 129},{undefined}]},
{name:'abcd',values:[{undefined},{undefined},{quarter: "Q4-2016", koordinaten: 19},{undefined}]}
];

var output = myArr.map(s => (s.values = s.values.filter(p => JSON.stringify(p) != "{}"), s));

console.log(output);
gurvinder372
  • 66,980
  • 10
  • 72
  • 94
0

This should do the trick, you basically need to remove all the undefined values by looping through them.

myArr = [
{name:'abcd',values:[undefined,{quarter: "Q2-2016", koordinaten: 119},{quarter: "Q3-2016", koordinaten: 129},undefined]},
{name:'abcd',values:[undefined,undefined,{quarter: "Q4-2016", koordinaten: 19},undefined]}
]

myArr.forEach(arrItem => {
 arrItem.values = arrItem.values.filter(x => !!x);
});

console.log(myArr);
Karthik RP
  • 1,028
  • 16
  • 26
0

You could filter falsy values (like undefined) with Array#filter and Boolean as callback.

var array = [{ name: 'abcd', values: [undefined, { quarter: "Q2-2016", koordinaten: 119 }, { quarter: "Q3-2016", koordinaten: 129 }, undefined] }, { name: 'abcd', values: [undefined, undefined, { quarter: "Q4-2016", koordinaten: 19 }, undefined] }];

array.forEach(function (o) {
    o.values = o.values.filter(Boolean);
});

console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }
Nina Scholz
  • 376,160
  • 25
  • 347
  • 392
0

You can use, underscore for such kind of tasks.

Compact method

myArr = [{
  name: 'abcd',
  values: [undefined, {
    quarter: "Q2-2016",
    koordinaten: 119
  }, {
    quarter: "Q3-2016",
    koordinaten: 129
  }, undefined]
}, {
  name: 'abcd',
  values: [undefined, undefined, {
    quarter: "Q4-2016",
    koordinaten: 19
  }, undefined]
}]

// Cleansed Array
myArr = myArr.map(function(arrItem) {
  arrItem.values = _.compact(arrItem.values);
  return arrItem
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
Vipin Kumar
  • 6,441
  • 1
  • 19
  • 25