2015-03-19 12 views
6

हे लोग जेएसओएन सरणी से 2 सरणी बनाने की कोशिश कर रहे हैं।जेएसओएन ऑब्जेक्ट से एक सरणी कैसे बनाएं

{ 
    "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" 
    }, 


} 

यह JSON सारणी है,

तो मैं 2 सरणियों का निर्माण करना चाहते।

1 सरणी केवल चाबियाँ जहां status=='booked' nOR status=='unavailable' और इसे बनाने के लिए इस

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']; 

एक और तरह jQuery सरणी में उन तत्व की (तिथि इस मामले में) पकड़े उन दिनों की तारीखों के साथ एक और सरणी बनाने जा रहा है जहां status=='available' AND price > '100$'

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

मैं इसे jQuery के साथ कैसे प्राप्त कर सकता हूं ??

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); 

पैदावार:

+0

संभव डुप्लिकेट http://stackoverflow.com/questions/2295496/convert-array-to-json) – arkoak

+0

उत्तर के साथ क्या हुआ ????? – Johnny

+0

@ वाटर यह था या यह पहले यहां एक जवाब था ???? – Johnny

उत्तर

4

तो j अपने json है

["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 से कोई लेना देना नहीं है, यह जवाब है कि मैं था देख .. – Johnny

0

इस प्रयास करें,

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

आप एक अधिक सामान्य दृष्टिकोण है, कि हो सकता है हो सकता है दूसरे में अनुकूलित करने के लिए उपयोगी है jQuery से निर्भरताओं के बिना, तुम्हारी परिदृश्य। डेटा को छानने के लिए एक छोटा सा समारोह:

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; 
} 

कि देते हुए अब आप लिख सकते हैं कोड की तरह:

// 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) 
       (); 

कहाँ obj सभी डेटा के साथ अपने वस्तु है।

वह आदेश सभी ऑब्जेक्ट के साथ परिभाषित प्रत्येक अनुमान के लिए दो सरणी लौटाएगा - क्योंकि यदि आप कुछ गुणों तक पहुंच बनाना चाहते हैं तो यह उपयोगी हो सकता है, फिर से फ़िल्टर करें। आप केवल चाबियाँ, उस बिंदु पर चाहते हैं तो आप बस कर सकते हैं: (के [JSON करने के लिए सरणी में कनवर्ट]

var notAvailableDates = Object.keys(results[0]); 
संबंधित मुद्दे