Я пытаюсь объявить массив из функции глобально, так что мои другие функции также могут использовать его, но я понятия не имею, как с тех пор, как я использую csvtojson для конвертера, который делает все это очень долго и задавался вопросом, является ли это способ объявить или нет?
JS:
//require the csvtojson converter class
var Converter = require("csvtojson").Converter;
// create a new converter object
var converter = new Converter({});
var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost:27017/myproject';
// call the fromFile function which takes in the path to your
// csv file as well as a callback function
var JSarray = converter.fromFile("./NTA-SAM-Inventory-List-Security-
Management-New_2017.csv",function(err, result, callback){
if(err){
console.log("An Error Has Occured");
console.log(err);
}
// the result of the conversion
console.log(result);
result.toArray(function(err,doc){
if(err) throw err;
console.log('ohhhhh');
return callback(null, doc);
}
});
var array=[JSarray(function(err,doc)]
Вот как я объявляю массив. Мой массив - это doc, поэтому я могу вернуть обратный вызов, но как мне получить массив, учитывая, что у меня есть converter.fromFile("./NTA-SAM-Inventory-List-Security- Management-New_2017.csv"
который слишком длинный, поэтому я опускаю его при объявлении массива, или я делаю это неправильно? Спасибо.
Обновление Просто хочу уточнить, правильно ли я это сделал.
var JSarray = converter.fromFile("./NTA-SAM-Inventory-List-Security-M
anagement-New_2017.csv",function(err, result, callback){
// if an error has occured then handle it
if(err){
console.log("An Error Has Occured");
console.log(err);
}
// the result of the conversion
console.log(result);
result.toArray(function(err,doc){
if(err) throw err;
console.log('ohhhhh');
return callback(null, doc);
var myArray= doc;
GLOBAL.GlobalMyArray = myArray;
});
});
Правильно ли это после вашего ответа, объявляя его глобально?
Вы можете установить массив глобально внутри функции, назначив его объекту window.
function myFunction() {
var myArray = new Array();
window.GlobalMyArray = myArray;
}
После его установки вы можете использовать GlobalMyArray
из любого места.
Используя Node.Js, вы можете использовать глобальные
function myFunction() {
var myArray = new Array();
GLOBAL.GlobalMyArray = myArray;
}
Теперь вы можете получить доступ к массиву глобально с помощью GLOBAL.GlobalMyArray
В этом случае это очень полезно сделать:
GLOBAL.window = GLOBAL
Как в веб-браузере.
require()
), у него нет объекта window
глобальные переменные не считаются хорошей практикой программирования.
Хотя вы можете создать глобальный объектный модуль и ссылаться на эти модули во всех других модулях вашего проекта и играть с открытыми свойствами из него.
Простым примером для этого является следующее в node.js:
Создайте модуль GlobalArray. Этот модуль будет выставлять одноэлементный объект класса, который он определяет. Конструктор этого класса создает переменную-член. Этот класс теперь выставляет переменную-член, используя такие методы, как Add, Get. Экземпляр этого класса экспортируется из модуля.
// File: GlobalArray.js
class GlobalArray {
constructor(){
this.array = [];
}
Add(item) {
this.array.push(item);
}
Get(){
return this.array;
}
}
let globalArray = new GlobalArray();
module.exports = globalArray;
Модуль для класса, который добавляет данные в Global Array, может быть создан следующим образом:
// File: Add.js
const globalArray = require("./GlobalArray");
class Add {
AddToGlobalArray(){
globalArray.Add("1");
globalArray.Add("2");
globalArray.Add("3");
globalArray.Add("4");
globalArray.Add("5");
}
}
module.exports = Add;
Модуль для класса, который печатает данные из Глобального массива, может быть создан следующим образом:
// File: Print.js
const globalArray = require("./GlobalArray");
class Print {
PrintGlobalArray(){
let array = globalArray.Get();
for(let i=0; i<array.length; i++){
console.log(array[i] + "\n");
}
}
}
module.exports = Print;
Оба модуля Add и Print используют оператор const globalArray = require("./GlobalArray")
для ссылки на глобальный массив.
Теперь мы можем использовать модули Add и Print, ссылаясь на них в index.js, чтобы добавлять и печатать данные, используя Global Array.
// File: index.js
const Add = require("./Add");
const Print = require("./Print");
// Creating object of Add module to add data to global array
let addObject = new Add();
addObject.AddToGlobalArray();
// Creating object of Print module to print data from global array
let printObject = new Print();
printObject.PrintGlobalArray();
После выполнения index.js он выводит следующий результат:
>node index.js
1
2
3
4
5
var myArray= doc; GLOBAL.GlobalMyArray = myArray; return callback(null, doc);