【问题标题】:Index of array containing key value pair in JSON fileJSON文件中包含键值对的数组的索引
【发布时间】:2014-09-26 00:22:32
【问题描述】:

如何编写一个函数来搜索 JSON 文件以查找存在包含特定键值对的对象的索引?例如,如果我们正在查找 value: '100.0',则该函数将为以下 JSON 文档返回 0,因为 key1 位于索引 0

var object = {
    key1 : {
        name : 'xxxxxx',
        value : '100.0'
    },
    key2 : {
        name : 'yyyyyyy',
        value : '200.0'
    },
    key3 : {
        name : 'zzzzzz',
        value : '500.0'
    },
}

【问题讨论】:

标签: javascript ajax json


【解决方案1】:

这里有一个小技巧给你:

http://jsfiddle.net/qskt9Lg9/

function findInJson(key1, value) { //pass it the desired matching key value pairs
    var i = 0;
    for (var key in object) {  //this will iterate through key1 - key3
        var current = object[key];
        if (current[key1] == value) {
            return i; //return the index
        }
        i++;//increment if no found
    }
   return -1;
}

你可以这样称呼它:

findInJson("name", "xxxxxx")

此站点:http://crunchify.com/how-to-iterate-through-jsonarray-in-javascript/ 为您提供了有关如何解析 JSON 的更多信息。

【讨论】:

    【解决方案2】:

    如果保证您的对象中的键不会被删除并稍后添加,您可以使用:

    function (object, key, value) {
        var index = 0;
    
        for (var oKey in object) {
            if (object[oKey][key] === value) {
                return index;
            }
    
            index++;
        }
    
        return -1;
    }
    

    但是for..in 语句以任意顺序迭代对象。有关详细说明,请参阅:“删除、添加或修改的属性”部分。

    如果您希望保留订单,最好使用数组并将“keyN”放入您的 {name, value} 对象中。

    【讨论】:

      【解决方案3】:

      如果您对支持 IE8 及以下版本不感兴趣,则可以使用 Object.keys() 方法,例如:

      function getIndex(val) {
          for (i = 0; i < Object.keys(object).length; i++) {
              if (object[Object.keys(object)[i]].value === val) {
                  return i;
              }
          };
          return -1;
      };
      console.log( getIndex("100.0") ); // returns  0
      console.log( getIndex("500.0") ); // returns  2
      console.log( getIndex("800.0") ); // returns -1
      

      JSFIDDLE

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-11
        • 1970-01-01
        • 1970-01-01
        • 2021-11-21
        • 2015-04-05
        • 1970-01-01
        相关资源
        最近更新 更多