搜索JSON数组以获取字符串并检索包含它的对象作为值

时间:2013-06-05 17:52:31

标签: javascript jquery json

我的JSON如下。它包含两个对象,每个对象都有几个键值对。如何搜索整个JSON数组并将包含特定字符串的对象作为值?

在这种情况下,我需要使用coupon_code:COUPON1拉取对象,这样我就可以拉出该优惠券的ID。

简而言之,我只需要使用coupon_code获取优惠券的ID:COUPON1

[Object, Object]

  0: Object
  coupon_code: "COUPON1"
  created_at: "2013-06-04T13:50:20Z"
  deal_program_id: 1
  id: 7
  updated_at: "2013-06-04T13:50:20Z"
  __proto__: Object

  1: Object
  coupon_code: "COUPON3"
  created_at: "2013-06-04T15:47:14Z"
  deal_program_id: 1
  id: 8
  updated_at: "2013-06-04T15:47:14Z"

谢谢:)

3 个答案:

答案 0 :(得分:9)

你只需循环遍历数组并查看。有lots of ways to do that in JavaScript

E.g:

var a = /*...your array...*/;
var index = 0;
var found;
var entry;
for (index = 0; index < a.length; ++index) {
    entry = a[index];
    if (entry.coupon_code == "COUPON1") {
        found = entry;
        break;
    }
}

或者使用ES5的Array#some方法(对于尚未拥有它的浏览器可以“填充”,搜索“es5 shim”):

var a = /*...your array...*/;
var found;
a.some(function(entry) {
    if (entry.coupon_code == "COUPON1") {
        found = entry;
        return true;
    }
});

答案 1 :(得分:3)

编写通用查找函数:

function find (arr, key, val) { // Find array element which has a key value of val 
  for (var ai, i = arr.length; i--;)
    if ((ai = arr[i]) && ai[key] == val)
      return ai;
  return null;
}

请致电如下:

find (arr, 'coupon_code', 'COUPON1')

答案 2 :(得分:2)

var result = null;
Objects.forEach(function(obj, i){
    if(obj.cupon_code == 'COUPON1'){
        return result = obj;
    }
});
console.log(result);

这将循环显示您的Array并检查coupon_code是否有指定值。如果找到了某些内容,则会在result中返回。

请注意,自JavaScript 1.6起,Array.forEach可用。您可能需要查看which browser are supporting它。