0

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

在这种情况下,我需要使用优惠券代码拉取对象:COUPON1,以便我可以拉取该优惠券的 ID。

简而言之,我只需要使用 coupon_code: COUPON1 获取 Coupon 的 id

[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"

谢谢 :)

4

3 回答 3

9

您只需遍历数组并查看。在 JavaScript中有很多方法可以做到这一点

例如:

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;
    }
});
于 2013-06-05T17:58:27.353 回答
4

编写一个通用的查找函数:

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')
于 2013-06-05T18:12:00.083 回答
3
var result = null;
Objects.forEach(function(obj, i){
    if(obj.cupon_code == 'COUPON1'){
        return result = obj;
    }
});
console.log(result);

这将遍历您Array并检查coupon_code您指定的值。如果它找到了一些东西,它将返回它result

请注意Array.forEach从 JavaScript 1.6 开始可用。您可能想看看哪个浏览器支持它。

于 2013-06-05T17:58:47.767 回答