如何判断我想使用哪种类型的对象

时间:2015-11-26 15:41:03

标签: javascript jquery ajax

我通过ajax获取此json:

[{"currency_value":"1.00","currency_code":"47","type":"BUY"},{"currency_value":"1.00","currency_code":"47","type":"SELL"}]

但是我想只使用那种类型为"卖出的人#34;

 var setcurrencyvalue = function(to, value) {
    parseInt($(to).attr('value', value)); // set the currency val
    calculatetotal();
    $('.amount-remaining').val(0);
    //set the amount
}

var showcurval = function(cur_code) {
    var $curcode = '';
    var $currency = $('.currency-czk');
    $.ajax({
       type: 'GET',
       url:  '/transactions/get_currency_val?cur_code=' + cur_code,
       success: function(data) {
           var obj = JSON.parse(data);
           $.each(obj, function (k, v) {
             //  console.log(v);
               switch (v.currency_code) {
                   case '47':
                       $curcode = '€'; // 1
                       setcurrencyvalue($currency, v.currency_value);
                       break;
                   case '33':
                       $curcode = 'Kč'; // CZK/EUR
                       setcurrencyvalue($currency, v.currency_value);
                       break;
                   case '131':
                       $curcode = '₽'; //CZK/RUB
                       setcurrencyvalue($currency, v.currency_value);
                       break;
                   case '144':
                       $curcode = '$'; //CZK/USD
                       setcurrencyvalue($currency, v.currency_value);
                       break;
                   case '168':
                       alert('Please set a currency!');
                       break;
               }

           });

       }
    });
}

这将随机给我v.currency_value其中两个。如何告诉Ajax只能使用"卖出"或"购买"?

4 个答案:

答案 0 :(得分:1)

您可以过滤每个AJAX获得的数据。

var obj = JSON.parse(data);
var sells = obj.filter(function(a) {
    return a.type === "SELL";
});

这将仅返回属性类型中具有值SELL的对象的新数组。

这里也是数组方法过滤器的链接:

https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

答案 1 :(得分:1)

返回时只需filter数据:

var obj = JSON.parse(data).filter(function (el) {
  return el.type === 'SELL';
})[0]; // { currency_value: "1.00", currency_code: "47", type: "SELL" }

filter返回一个数组。 [0]返回数组的第一个元素。如果您有多个需要返回type: 'SELL'的对象,请将其关闭。

如果你想要一个通用函数来从数据中按类型获取对象,它可能如下所示:

function getDataByType(data, type) {
    return data.filter(function (el) {
        return el.type === type;
    });
}

var arr = getDataByType(data, 'SELL');

DEMO

答案 2 :(得分:1)

您可以在解析后立即过滤生成的数组。 基本上它是关于使用过滤器原型:

obj.filter(function (el) {
     return el.type === "SELL"
});

结果你得到一个新数组,它只包含通过filter-function的元素。

有关过滤JS-Arrays的更多信息,请参阅以下内容:

Javascript: How to filter object array based on attributes?

干杯,克里斯托夫

答案 3 :(得分:0)

你可以有这样的if条件

 $.ajax({
   type: 'GET',
   url:  '/transactions/get_currency_val?cur_code=' + cur_code,
   success: function(data) {
       var obj = JSON.parse(data);
       $.each(obj, function (k, v) {
         //  console.log(v);
         if(v.type == "SELL"){
           switch (v.currency_code) {
               case '47':
                   $curcode = '€'; // 1
                   setcurrencyvalue($currency, v.currency_value);
                   break;
               case '33':
                   $curcode = 'Kč'; // CZK/EUR
                   setcurrencyvalue($currency, v.currency_value);
                   break;
               case '131':
                   $curcode = '₽'; //CZK/RUB
                   setcurrencyvalue($currency, v.currency_value);
                   break;
               case '144':
                   $curcode = '$'; //CZK/USD
                   setcurrencyvalue($currency, v.currency_value);
                   break;
               case '168':
                   alert('Please set a currency!');
                   break;
           }
         }
       });

   }
});