根据驻留在Json数组中的对象的Json值获取Json Key

时间:2014-11-19 15:03:01

标签: javascript json angularjs arrays jsonobject

如何根据值获取位于数组中的json的键,例如,如果值 ValueB 它应该返回 MainB

var app = angular.module('myApp', []);
app.controller('ArrayController', function ($scope) {
   $scope.myDatas =  [
      {
        "Test1": "Value1",
        "MainA": ""
      },
      {
        "Test1": "Value2",
        "MainA": "ValueB"
      },
      {
        "Test1": "",
        "MainA": "ValueC"
      }
    ];

    $scope.getJsonKey = function(jsonArray, jsonValue) 
    {
        angular.forEach(jsonArray, function(value, index) 
        {
            if (value.Test1 === jsonValue) 
            {
                return "Test1";
            }
            if (value.MainA === jsonValue) 
            {
                return "MainA";
            }
        });
    };
   console.log($scope.getJsonKey($scope.myDatas, "ValueB"));

});

任何人都可以告诉我一些解决方案吗

3 个答案:

答案 0 :(得分:2)

这是一个小功能,可以做你想要的,只要值是唯一的:



var arr=[
      {
        "Test1": "Value1",
        "MainA": "ValueA"
      },
      {
        "Test2": "Value2",
        "MainB": "ValueB"
      },
      {
        "Test3": "Value3",
        "MainC": "ValueC"
      }
    ]


function getKey(arr, val){
    for(var i=0;i<arr.length;i++){
        var item= arr[i];
        for(var key in item){
            if(val === item[key]) return key;
        }
    }   
    return null; // not found
}

console.log(getKey(arr, 'ValueB')) // MainB
&#13;
&#13;
&#13;

答案 1 :(得分:1)

试试这个

$scope.getJsonKey = function(jsonArray, jsonValue) 
    {
        angular.forEach(jsonArray, function(value, index) 
        {
           for(var key in value) {

            if (value === jsonValue) 
            {
                return key
            }

            }
        });
    };
       console.log($scope.getJsonKey($scope.myDatas, "ValueB"));

答案 2 :(得分:1)

你这里没有共享太多代码,所以我不确定最佳解决方案是什么。 但是,要简单回答您的问题,您可以使用此示例: 通过$ .parseJSON()将JSON转换为js对象,然后找到您的密钥:

function getKeyInArray(arr, val){
    for(var i=0, len=arr.length;i<len;i++){
        var obj = arr[i];
        for(var key in obj){
            if(obj[key] == val)
                return key;      
        }
    }
    return null;
}

查看示例: http://jsfiddle.net/wc3mhg8u/21/