【问题标题】:How to get the 'Value' using 'Key' from json in Javascript/Jquery如何在 Javascript/Jquery 中使用 json 中的“键”获取“值”
【发布时间】:2014-08-26 10:32:05
【问题描述】:

我有以下 Json 字符串。我想使用'Key'来获取'Value',比如

给出 'BtchGotAdjust' 会返回 'Batch Got Adjusted';

var jsonstring=
[{"Key":"BtchGotAdjust","Value":"Batch Got Adjusted"},{"Key":"UnitToUnit","Value":"Unit To Unit"},]

【问题讨论】:

  • 像数组一样访问它?还是我把你的问题弄错了?
  • 您需要遍历您的对象数组并比较或使用像 underscoreJS 这样的库,这使得它变得简单快捷:_.findWhere(list, properties)
  • @Ahmad 你可以使用纯js,不需要其他库。
  • @Magrangs 我们可以肯定地用纯 js 做任何事情,但我们大多数人仍然使用它们来节省时间:)
  • @Ahmad 同意,但这只是一个简单的问题,在这种情况下添加库是多余的。

标签: javascript jquery asp.net-mvc json


【解决方案1】:

哇...看起来有点难!似乎您需要对其进行一些操作。我们可以这样创建一个新对象,而不是函数:

var jsonstring =
    [{"Key":"BtchGotAdjust","Value":"Batch Got Adjusted"},{"Key":"UnitToUnit","Value":"Unit To Unit"},];
     var finalJSON = {};
     for (var i in jsonstring)
         finalJSON[jsonstring[i]["Key"]] = jsonstring[i]["Value"];

您可以使用它:

finalJSON["BtchGotAdjust"]; // Batch Got Adjusted

【讨论】:

  • 似乎是一个很好的方法,最好循环一次并更改为字典而不是每次循环并检查。
【解决方案2】:

由于变量中有一个数组,因此您必须遍历该数组并与每个元素的 Key-Property 进行比较,类似于以下内容:

for (var i = 0; i < jsonstring.length; i++) {
  if (jsonstring[i].Key === 'BtchGotAdjust') {
    console.log(jsonstring[i].Value);
  }
}

顺便说一句,我认为您的变量名称jsonstring 有点误导。它确实不包含字符串。它包含一个数组。不过,上面的代码应该会给你一个正确方向的提示。

【讨论】:

  • 最好创建一个函数,它接受一个key 并返回一个value。
  • 是的,当然。代码应该只是演示方法; OP 应该把它包装成一些函数,比如getElementByKey。
  • 请注意,每次您想通过键获取元素时,这种方法都会遍历数组。如果您要经常这样做,请参考 Praveen 的回答,因为这样会更好。
【解决方案3】:

我个人会从数组创建一个映射,然后它就像一个字典,让您可以即时访问。您也只需遍历数组一次即可获得所需的所有数据:

var objectArray = [{"Key":"BtchGotAdjust","Value":"Batch Got Adjusted"},{"Key":"UnitToUnit","Value":"Unit To Unit"}]

var map = {}

for (var i=0; i < objectArray.length; i++){
    map[objectArray[i].Key] = objectArray[i]
}

console.log(map);
alert(map["BtchGotAdjust"].Value)
alert(map["UnitToUnit"].Value)

在这里查看 js fiddle:http://jsfiddle.net/t2vrn1pq/1/

【讨论】:

  • 啊刚刚发现了 Praveen 的答案,这与我的概念几乎相同。如果您要接受答案,请在他先到达那里时选择他的而不是我的:-)
猜你喜欢
  • 1970-01-01
  • 2013-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-01
  • 1970-01-01
相关资源
最近更新 更多