所以我有一个像下面这样的json对象数组。使用XMLHTTP检索哪些。现在我想'选择'值,其中name ==“test”使用javascript我该怎么办?我知道我可以做例如data [0],但这不是我想要的,因为Id可以改变。
#!/usr/bin/env python3
import urllib.parse
def alnum_encode(text):
return urllib.parse.quote(text, safe='')\
.replace('-', '%2d').replace('.', '%2e').replace('_', '%5f')\
.replace('%', '_')
def alnum_decode(underscore_encoded):
return urllib.parse.unquote(underscore_encoded.replace('_','%'), errors='strict')
s = alnum_encode("Random UTF-8 String ☑⚠⚡")
print(s)
print(alnum_decode(s))
答案 0 :(得分:3)
你可以使用循环,所以你可以使用Array.filter
,你可以得到第一场比赛,例如:
var items = [{"name" : "test", "value": "Something"},{"name" : "test2", "value": "Something else"}];
var where = "name", is = "test2"
, select = items.filter(function(item){ return item[where] == is})[0];
console.log(select)
答案 1 :(得分:0)
您已经在使用JSON对象,但是您已将它们嵌套到一个数组中,该数组具有索引编号,不要将索引误认为是ID,因为ID应该表示唯一性因此必须是不可变的 - 您可以,例如,对数组进行排序。
现在,你的问题是你正在寻找一个特定的信息,即名称,好吧,它将取决于你想要做什么,虽然我认为所有的方式都会有一些循环通过数组和每个交互将检查对象是否与您的条件匹配 - 通常将此过滤操作委托给函数。
答案 2 :(得分:0)
我发现lodash
库非常适合像这样的数据操作。你可以这样做:
var item = _.find(data, {'name' : 'test' })
完整示例:
var _ = require('lodash')
var data = [
{"name" : "test", "value": "Something"},
{"name" : "test2", "value": "Something else"} ]
var item = _.find(data, {'name' : 'test' })
console.log(item)
// => { name: 'test', value: 'Something' }
更多信息:https://lodash.com/docs#find
修改:如果需要,请先使用JSON.parse(my_json)
将JSON转换为真正的JavaScript数据结构。
答案 3 :(得分:0)
var json = [........];
function findInJson(json, key, val) {
for (var i in json) {
if (json[i][key] == val)
return json[i];
}
return false;
}
console.log( findInJson(json, 'name', 'test') );
如果找到,将从数组返回对象,否则返回false