alhazmy13 / angular-csv-ext

Helper library for create CSV file in Angular.
MIT License
45 stars 23 forks source link

Export CSV exports also Array prototype #47

Open vladrusu04 opened 4 years ago

vladrusu04 commented 4 years ago

If you add any methods on Array/Object prototype then the for in loop from getBody() method will try to export it. https://github.com/alhazmy13/angular-csv-ext/blob/master/Angular-csv.ts#L136

As a fix I would suggest using the hasOwnProperty method to avoid iterate over inherited properties, or maybe use Object.keys() and iterate over them to fully avoid for in loop

How to reproduce:

Array.prototype.myFunct = function () { return this; }

const data = [1, 2, 3];
new AngularCsv(data, 'My Report');

// the output will be a CSV file with
// 1, 2, 3, function () { return this; }

For moment, as a hack workaround I override the toString() method for prototype functions:

Array.prototype.myFunct = myFunct;

function myFunct() { return this; }
myFunct.toString = () => '';
alhazmy13 commented 4 years ago

Hi @vladrusu04

Can you please send a PR for this?

Thanks