如何将Javascript数组转换为CSV文件并从Chrome扩展下载?

如何将Javascript数组转换为CSV文件并从Chrome扩展下载?,javascript,angularjs,google-chrome-extension,export-to-csv,Javascript,Angularjs,Google Chrome Extension,Export To Csv,您好,我是Chrome扩展的新手,正在angularjs中开发它,我正在尝试将数组转换为csv文件,并从Chrome扩展下载它 我已经试过了 var csvData = new Blob($scope.result, { type: 'text/csv' }); var csvUrl = URL.createObjectURL(csvData); chrome.downloads.download({ url: csvUrl }); 然后,我从SO那里得到了另一种方法 va

您好,我是Chrome扩展的新手,正在angularjs中开发它,我正在尝试将数组转换为csv文件,并从Chrome扩展下载它

我已经试过了

var csvData = new Blob($scope.result, { type: 'text/csv' }); 
var csvUrl = URL.createObjectURL(csvData);
chrome.downloads.download({ url: csvUrl });     
然后,我从SO那里得到了另一种方法

    var finalVal = '';

    for (var i = 0; i < $scope.result.length; i++) {
        var value = $scope.result[i];

        for (var j = 0; j < value.length; j++) {
            var innerValue =  value[j]===null?'':value[j].toString();
            var result = innerValue.replace(/"/g, '""');
            if (result.search(/("|,|\n)/g) >= 0)
                result = '"' + result + '"';
            if (j > 0)
                finalVal += ',';
            finalVal += result;
        }

        finalVal += '\n';
    }

    console.log(finalVal);

    var download = document.getElementById('download');
    download.setAttribute('href', 'data:text/csv;charset=utf-8,' + encodeURIComponent(finalVal));
    download.setAttribute('download', 'test.csv');
虽然第一种方法下载一个文件,但它包含

[object Object][object Object][object Object]

我需要将我的$scope.result导出到csv文件中

尝试此操作

var csvData = new Blob(JSON.stringify($scope.result), { type: 'text/csv' }); 
var csvUrl = URL.createObjectURL(csvData);
chrome.downloads.download({ url: csvUrl });

您可以使用Blob对象和Chrome下载API实现这一点。这里有一个例子

let data = [["x", "y"], [10, 20]];
let csvContent = data.map(row => row.join(",")).join("\n");
let csvBlob = new Blob([csvContent], { type: 'text/csv' });
let csvUrl = URL.createObjectURL(csvBlob);
chrome.downloads.download({ url: csvUrl });

要想让这个问题真正得到解答,您需要找到一种方法来显示数据是如何在
$scope.result
中组织的。至于第二种方法,它可能会由于Chrome 65中出现故障而失败,因此您可以像第一种方法一样使用Chrome.downloads.download进行尝试,或者使用上面crbug链接中第二条注释中显示的iframe解决方法。
let data = [["x", "y"], [10, 20]];
let csvContent = data.map(row => row.join(",")).join("\n");
let csvBlob = new Blob([csvContent], { type: 'text/csv' });
let csvUrl = URL.createObjectURL(csvBlob);
chrome.downloads.download({ url: csvUrl });