Как получить значение sh в массиве для хранения в chrome хранилище? - PullRequest
1 голос
/ 30 марта 2020

Array pu sh Функция создает вложенные массивы, а не помещает значения в индексы. его создание вложенного элемента в элементе вместо добавления его в индекс массива. Я перепробовал много способов, но не нашел проблемы. я хочу добавить массив в каждый индекс, чтобы я мог получить его и создать его CSV. Я хочу вывод, подобный этому: item [0] = [название, описание, цена, изображение] item 1 = [название, описание, цена, изображение] и так далее, согласно значениям, введенным здесь, это мой js:

    $(function(){
        var title='';
            var price='';
            var description='';
            var image='';
            var i=0;
            var product =[];
            var products=[];
        $("#scrape").click(function(){
            chrome.storage.sync.get(["key"],function(result){
                if(result.key!=undefined){  
                    i=result.key;
                }
            });
        chrome.tabs.query({active:true,currentWindow:true},function(tabs){
            chrome.tabs.sendMessage(tabs[0].id,{todo:"fetch"},function(response){
                     description =response.description;
                     title=response.title;
                     image=response.image;
                     price=response.price;
                     product=[title,price,image,description];
                chrome.storage.sync.get(function(item){
                    if(item["products"] != undefined){
                        item["products"].push(product);
                    }
                    else{
                        item["products"]=product;
                    }
                    //console.log(item);
                    chrome.storage.sync.set({item});
                    i=i+1;
             });
            });
        });
    });
});

введите описание изображения здесь

1 Ответ

0 голосов
/ 30 марта 2020

Думайте о хранилище как о стандартном JS объекте, который имеет ключи и значения. В вашем случае имеет смысл использовать ключ типа products, который будет стандартным JS массивом. Единственное концептуальное отличие от использования chrome .storage заключается в том, что вам нужно читать и записывать значение отдельно.

$('#scrape').click(function () {
  chrome.tabs.query({active: true, currentWindow: true}, tabs => {
    chrome.tabs.sendMessage(tabs[0].id, {todo: 'fetch'}, response => {
      chrome.storage.sync.get('products', ({products = []}) => {
        products.push([
          response.title,
          response.price,
          response.image,
          response.description,
        ]);
        chrome.storage.sync.set({products});
      });
    });
  });
});
...