[英]remove array object from nested array if element is undefined using javascript
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, 我想删除结果数组中带有索引的未定义元素,
Try map
and filter
尝试map
和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);
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);
You could filter falsy values (like undefined
) with Array#filter
and Boolean
as callback. 您可以使用Array#filter
和Boolean
作为回调来过滤虚假值(如undefined
)。
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; }
You can use, underscore for such kind of tasks. 您可以将下划线用于此类任务。
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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.