2014-02-26 62 views
0

這裏就是我有一個數組解析....通過對象不是值

settings: Object 
color: "#858789" 
cursor: "cursors/coin.png" 
height: 100 
image1: "images/slide3.png" 
image2: "images/slide5.png" 
image3: "images/slide5.png" 
image4: "images/slide2.png" 
image5: "images/slide7.png" 
image6: "images/slide6.png" 
image7: "images/slide6.png" 
image8: "images/slide1.png" 
image9: "images/slide1.png" 
imageCover: "images/scratchimg2.gif" 
overlay: "none" 
realtimePercent: true 
scratchDown: null 
scratchMove: function (e, percent) 
scratchUp: null 
size: 10 
width: 100 

我需要/想要做的僅僅是訪問圖像什麼...

我使用UNDERSCORE僅通過image1 - image9過濾並填充數組。剩下的垃圾我可以不在乎。

任何想法?

這是我的底線代碼:

 //Populate the image array 
     imgID = "image" + (parseFloat(i) + 1); 

     var imgName = _.filter({imgID: "images/"}, function(imgnmid) { 

      imgArray.push(imgnmid) 
      return imgnmid = "images/"; 

     }); 

是的,我知道,這是一個爛攤子......

這是一個閉合功能

像這裏面:

(function($) 
{ 
    $.fn.someFuncName = function(option, settings) 
    { 


    ..... 

    } 

})(Jquery); 

謝謝...

回答

1

這個怎麼樣?對對象的鍵進行相當簡單的迭代。你也可以使用下劃線,但我不認爲你需要它。

Live Demo

JS

var obj = { 
    settings: {}, 
    color: "#858789", 
    cursor: "cursors/coin.png", 
    height: 100, 
    image1: "images/slide3.png", 
    image2: "images/slide5.png", 
    image3: "images/slide5.png", 
    image4: "images/slide2.png", 
    image5: "images/slide7.png", 
    image6: "images/slide6.png", 
    image7: "images/slide6.png", 
    image8: "images/slide1.png", 
    image9: "images/slide1.png", 
    imageCover: "images/scratchimg2.gif", 
    overlay: "none", 
    realtimePercent: true, 
    scratchDown: null, 
    scratchMove: function (e, percent){}, 
    scratchUp: null, 
    size: 10, 
    width: 100 
}; 

function extractImages(obj){ 
    var imgArray = [], 
     num = 0; 

    //Iterate over the object's keys (no need for underscore to do this). 
    for(var key in obj){ 

     //http://stackoverflow.com/a/10003709/402706 
     //Get the number off the key (if there is one) 
     num = parseInt(key.replace(/^\D+/g, ''), 10); 

     //is the text 'image' part of the key and is number 1-9 
     if(key.indexOf('image') > -1 && num > 0 && num < 10){ 
      imgArray.push(obj[key]); 
     } 
    } 
    return imgArray; 
} 

alert(extractImages(obj)); 
0

你可以這樣做:

var i = 1; 
_.filter(images, function (value, index) { // images is your full object 
    if ('image' + i == index) { 
     imgArray.push(value); // push value 
     ++i; 
    } 
}); 

Demo