2015-03-19 36 views
6

Hey guys JSON dizilerinden 2 dizi oluşturmaya çalışıyorum.jSon nesnesinden bir dizi nasıl oluşturulur

{ 
    "2015-03-24": { 
     "bind": 0, 
     "info": "", 
     "notes": "", 
     "price": "150", 
     "promo": "", 
     "status": "available" 
    }, 
    "2015-03-25": { 
     "bind": 0, 
     "info": "", 
     "notes": "", 
     "price": "150", 
     "promo": "", 
     "status": "available" 
    }, 
    "2015-03-26": { 
     "bind": 0, 
     "info": "", 
     "notes": "", 
     "price": "150", 
     "promo": "", 
     "status": "available" 
    }, 
    "2015-03-27": { 
     "bind": 0, 
     "info": "", 
     "notes": "", 
     "price": "100", 
     "promo": "", 
     "status": "available" 
    }, 
    "2015-03-28": { 
     "bind": 0, 
     "info": "", 
     "notes": "", 
     "price": "100", 
     "promo": "", 
     "status": "available" 
    }, 
    "2015-03-29": { 
     "bind": 0, 
     "info": "", 
     "notes": "", 
     "price": "100", 
     "promo": "", 
     "status": "available" 
    }, 


    "2015-04-10": { 
     "bind": 0, 
     "info": "", 
     "notes": "", 
     "price": "", 
     "promo": "", 
     "status": "booked" 
    }, 
    "2015-04-11": { 
     "bind": 0, 
     "info": "", 
     "notes": "", 
     "price": "", 
     "promo": "", 
     "status": "booked" 
    }, 

    "2015-05-01": { 
     "bind": 0, 
     "info": "", 
     "notes": "", 
     "price": "", 
     "promo": "", 
     "status": "unavailable" 
    }, 
    "2015-05-02": { 
     "bind": 0, 
     "info": "", 
     "notes": "", 
     "price": "", 
     "promo": "", 
     "status": "unavailable" 
    }, 
    "2015-05-03": { 
     "bind": 0, 
     "info": "", 
     "notes": "", 
     "price": "", 
     "promo": "", 
     "status": "unavailable" 
    }, 


} 

bu JSON'dan dizidir,

Yani ben 2 diziler kurmak istiyoruz. Nerede status=='booked' nOR status=='unavailable' ve inşa bu

var array = ['2015-03-19', '2015-03-20', '2015-03-21', '2015-03-22', '2015-03-23', '2015-03-24', '2015-03-25', '2015-03-26', '2015-04-07', '2015-04-08', '2015-04-09', '2015-04-10']; 

başka benzeri jQuery dizide bu elemanın (bu durumda tarih) sadece anahtarlarını tutan

1 dizisi O günlerin tarihleri ​​ile başka dizi bina nerede status=='available' AND price > '100$'

var array2 = ['2015-03-25', '2015-03-26', '2015-04-07', '2015-04-08'];

Bunu jQuery ile nasıl yapabilirim?

var a1 = []; 
var a2 = []; 
$.each(j, function(key, ob) { 
    if(ob.price > 100 && ob.status == 'available'){ 
     a1.push(key); 
    } 
    if(ob.status == 'booked' || ob.status == 'unavailable'){ 
     a2.push(key); 
    } 
}); 
console.log(a1); 
console.log(a2); 

Verim:

+0

olası yinelenen (http://stackoverflow.com/questions/2295496/convert-array-to-json) – arkoak

+0

Cevaplara ne oldu ????? – Johnny

+0

@watcher benim veya daha önce burada bir cevap oldu ???? – Johnny

cevap

4

j Eğer json olan

["2015-03-24", "2015-03-25", "2015-03-26"] 
["2015-04-10", "2015-04-11", "2015-05-01", "2015-05-02", "2015-05-03"] 
+0

thanx ile ilgisi yok, bu benim seyir .. – Johnny

0

bu deneyin,

var array1 = []; 
var array2 = []; 
$.each(data.items, function(key, val) { 
    if((val.status == 'booked') || (val.status == 'unavailable')){ 
    array1.push(key); 
    } 
    if((val.status == 'available') && (val.price > 100)){ 
    array2.push(key); 
    } 
}) 
0
function obj_key_select(obj, func) { 
    newArr = []; 
    for(var index in obj) { 
     if (obj.hasOwnProperty(index)) { 
      if(func(obj[index])) { 
       newArr.push(index); 
      } 
     } 
    } 
    return newArr; 
} 

var dates = JSON.parse(jsonString); 

var arrOne = obj_key_select(dates, function(element){ 
    return (element.status === 'booked' || element.status === 'unavailable'); 
}); 

var arrTwo = obj_key_select(dates, function(element){ 
    return (element.status === 'available' && parseInt(element.price) > 100); 
}); 
1

Sen daha genel bir yaklaşım var, bu olabilir olabilir diğerlerine uyum sağlamak için yararlı jQuery'den bağımlı olmayan senaryolarınız. veri filtreleme için küçük bir fonksiyonu: veriyorsun ya

function from(data) { 
    var predicates = []; 
    var results = []; 

    function exec() { 
    for (var k in data) { 
     if (data.hasOwnProperty(k)) { 
     for (var i = 0, l = predicates.length; i < l; i++) { 
      if (predicates[i](data[k])) { 
      results[i][k] = data[k] 
      } 
     } 
     } 
    } 

    return results; 
    } 

    exec.get = function(predicate) { 
    predicates.push(predicate); 
    results.push({}); 
    return exec; 
    } 

    return exec; 
} 

, artık yazabilirsiniz kod gibi: obj tüm verilerle nesnedir

// predicates 
function isNotAvailable(item) { 
    return item.status === "unavailable" || item.status === "booked" 
} 

function isAvailableAndPriceGreater100(item) { 
    return item.status === "available" && +item.price > 100 
} 

// results 
var results = from(obj) 
       .get(isNotAvailable) 
       .get(isAvailableAndPriceGreater100) 
       (); 

.

Bu komut, tanımlanmış her yükleme için bir tane olmak üzere iki diziyi döndürür; çünkü bazı özelliklere erişmek istiyorsanız yararlı olabilir; Eğer bu noktada sadece tuşları, isterseniz sadece yapabilirsiniz: [JSON dizisi dönüştürme] arasında

var notAvailableDates = Object.keys(results[0]); 
İlgili konular