我通过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只能使用"卖出"或"购买"?
答案 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');
答案 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;
}
}
});
}
});