2017-12-24 30 views
0

크롬 확장에서 chrome.storage.local의 일부 변수를 chrome.storage.local.set({["name" + counter]: ""}, function() {});과 같이 저장합니다 (많은 ES6 계산 속성 이름에 대한 답변 덕분에 here). 여기서 counter은 기본적으로 증가 된 숫자입니다.JavaScript의 chrome.storage.local에서 문자열로 시작하는 변수 제거하기

chrome.storage.local.remove을 사용하면 더 이상 필요하지 않을 때 이전에 저장된 "이름"으로 시작하는 모든 변수를 제거 할 수 있습니까?

참고 : 배열로 저장할 수 없으므로이 유형의 저장소 ("name0", "name1", ...)를 사용하고 chrome.storage.local에서 즉시 업데이트해야합니다. 배열, 업데이트 한 다음 다시 저장하십시오. 많은 양의 데이터에는 적합하지 않습니다). 또한 새로운 확장 실행의 경우 최대 counter 값을 모르므로 for 루프 내에서 사용할 수 없습니다.

+0

연속적으로 저장하는 변수 이름은 두 변수가 1을 초과하지 않는다는 점에서 예를 들어 '..., name4, name6, name7'? – Callam

+0

현재 구현 중 예 (비록 내가이 접근법을 나중에 유지할 지 모르겠지만)입니다. –

+0

'name'으로 시작하는 모든 변수를 제거하는 한 가지 방법은 추가하려는 모든 이름의 배열을 유지하는 것입니다. 그것들을 제거하면 쉽게'chrome.storage.local.remove (variablesNames)'가 될 것입니다. 필요에 따라 스토리지에이 어레이를 저장할 수 있습니다. – Callam

답변

1

내 능력 밖이기 때문에 의견을 달으려고했습니다. 그러나 이것이 적절한 포맷을 제공하기 때문에.

null을 첫 번째 매개 변수로 전달하면 전체 값을 가져옵니다. chrome.storage에서 보았습니다. 따라서 콜백을 제공하면

저장 항목이 충분히 클 수 있으므로 다른 키 이름에 키를 저장하는 것이 좋습니다. 키의 크기가 여전히 큰 경우 래퍼 함수

function set(key, value) { 
    var collectionOfKeys = chrome.storage.local.get('collection_of_keys') || [] 

    collection_of_keys.push(key) 

    chrome.storage.local.set('collection_of_keys', collection_of_keys) 
    chrome.storage.local.set('name' + key, value) 
} 

의 예 충분히 바보

chrome.storage.local.remove(chrome.storage.local.get('collection_of_keys')) 

음을 제거하십시오.

순차적으로 보관하는 경우에 대비하여 길이를 추적 할 수도 있습니다.

function set(key, value) { 
    var collectionOfKeyLength = chrome.storage.local.get('collection_of_key_length') || 0 

    chrome.storage.local.set('collection_of_key_length', collectionOfKeyLength + 1) 
    chrome.storage.local.set('name' + key, value) 
} 

function remove() { 
    for (var i = 0; i < chrome.storage.local.get('collection_of_key_length'); i++) { 
     chrome.storage.local.remove('name' + i) 
    } 
} 
+0

OP는 전체 값을 가져 오지 않으려합니다. 질문에 대한 내 의견에 설명 된 변수 이름 배열을 얻기 위해 질문을 수정하십시오. – Callam

+0

@ 칼럼 : 맞습니다. @ Chay22 : 아니면,'remove' 콜백에서 오류를 테스트하고, 'while' 루프에있는 모든 것이 있다면 끊을 수 있습니다. 순차적 인 이름의 경우, 나는 이것이 트릭을 수행 할 것이라고 생각합니다. 그에 따라 답변을 업데이트하고 싶을 수도 있습니다 ... –

+0

젠장, 내 영어는 어떻게 개선되지 않았을까, 해결 방법으로 편집 할 것입니다. – Chay22