2017-10-27 7 views
0

私はいくつかのオブジェクトをlocalstorageに保存しています。キーを取得すると無視されるオブジェクトがいくつかありますが、キーをフィルタリングする配列があります。私は実際のキー/値を持つlocalstorageとして私をここで考えると、私はbglistusernamevisitedbeforeのプロパティを無視したい、私はループを介してそれをしようとしています。しかし、bglistだけがフィルタリングされたものとして扱われています。キーオブジェクトを適切にフィルタリングする方法

var l = { 
 
     '1': [{ description: 'ga', set_title: 'name this reminder' }], 
 
     bglist: [ 
 
     { 
 
      author: 'Bildermeines', 
 
      images: [ 
 
      './images/bildermeines/landscape-2130844.jpg', 
 
      './images/bildermeines/milky-way-2076251.jpg', 
 
      './images/bildermeines/nature-2484584.jpg', 
 
      './images/bildermeines/port-2506025.jpg', 
 
      './images/bildermeines/waterfall-2115206.jpg', 
 
      ], 
 
     }, 
 
     { 
 
      author: 'Jez Timms', 
 
      images: [ 
 
      './images/jeztimms/jez-timms-157465.jpg', 
 
      './images/jeztimms/jez-timms-158151.jpg', 
 
      './images/jeztimms/jez-timms-178355.jpg', 
 
      ], 
 
     }, 
 
     { 
 
      author: 'Lubos Houska', 
 
      images: [ 
 
      './images/luboshouska/city-1134141.jpg', 
 
      './images/luboshouska/prague-1168302.jpg', 
 
      ], 
 
     }, 
 
     { 
 
      author: 'oadtz', 
 
      images: [ 
 
      './images/oadtz/bangkok-1897718.jpg', 
 
      './images/oadtz/electricity-1835546.jpg', 
 
      './images/oadtz/star-1908593.jpg', 
 
      ], 
 
     }, 
 
     { 
 
      author: 'quangle', 
 
      images: [ 
 
      './images/quangle/ham-ninh-1050828.jpg', 
 
      './images/quangle/sunrise-1014711.jpg', 
 
      ], 
 
     }, 
 
     { 
 
      author: 'skeeze', 
 
      images: [ 
 
      './images/skeeze/eiffel-tower-1156146.jpg', 
 
      './images/skeeze/monument-valley-1593318.jpg', 
 
      './images/skeeze/mountains-2228259.jpg', 
 
      ], 
 
     }, 
 
     ], 
 
     username: 'Disgusting', 
 
     visitedbefore: false, 
 
    }; 
 
    
 
    let filterArr = ['bglist', 'username', 'visitedbefore']; 
 
    let keys = Object.keys(l), 
 
     i = 0, 
 
     key, 
 
     array, 
 
     filterItem = 0; 
 
    
 
    for (; filterItem < filterArr.length; filterItem++) { 
 
     for (; (key = keys[i]); i++) { 
 
     if (filterArr[filterItem] === key) { 
 
      console.log(key + ' is filtered ' + filterArr[filterItem]); 
 
     } else { 
 
      console.log(key + ' is not filtered'); 
 
     } 
 
     } 
 
    }

以下は、私にJSON.parse()レトリバーは簡単にキーと値のペアをフィルタリングするために使用することができ、出力

1 is not filtered 
bglist is filtered bglist 
username is not filtered 
visitedbefore is not filtered 
+0

希望の出力は何ですか?ネストされたループはちょっと変わったようです: 'filterArr'の各項目に対して、すべてのオブジェクトキーをループしますか?外のループが始まる前に 'i'の初期値を一度しか設定していないので、内部ループは外側の最初の繰り返しに対してのみ実行されるので、あなたはそうしません。内部ループの 'for(i = 0; ...')を設定して何が起こるかを見てください。 – nnnnnn

答えて

0

います:

var j = '{"1":[{"description":"ga","set_title":"name this reminder"}],"bglist":[{"author":"Bildermeines","images":["./images/bildermeines/landscape-2130844.jpg","./images/bildermeines/milky-way-2076251.jpg","./images/bildermeines/nature-2484584.jpg","./images/bildermeines/port-2506025.jpg","./images/bildermeines/waterfall-2115206.jpg"]},{"author":"Jez Timms","images":["./images/jeztimms/jez-timms-157465.jpg","./images/jeztimms/jez-timms-158151.jpg","./images/jeztimms/jez-timms-178355.jpg"]},{"author":"Lubos Houska","images":["./images/luboshouska/city-1134141.jpg","./images/luboshouska/prague-1168302.jpg"]},{"author":"oadtz","images":["./images/oadtz/bangkok-1897718.jpg","./images/oadtz/electricity-1835546.jpg","./images/oadtz/star-1908593.jpg"]},{"author":"quangle","images":["./images/quangle/ham-ninh-1050828.jpg","./images/quangle/sunrise-1014711.jpg"]},{"author":"skeeze","images":["./images/skeeze/eiffel-tower-1156146.jpg","./images/skeeze/monument-valley-1593318.jpg","./images/skeeze/mountains-2228259.jpg"]}],"username":"Disgusting","visitedbefore":false}' 
 

 
let filters = { 'bglist': 1, 'username': 1, 'visitedbefore': 1 } 
 

 
var result = JSON.parse(j, (k, v) => filters[k] ? void 0 : v) 
 

 
console.log(result)

+0

whoaありがとう –

関連する問題