是否可以在不使用索引号的情况下访问 json 数组元素
Is it possible to access a json array element without using index number?
我有以下JSON:
{
"responseObject": {
"name": "ObjectName",
"fields": [
{
"fieldName": "refId",
"value": "2170gga35511"
},
{
"fieldName": "telNum",
"value": "4541885881"
}]}
}
我想在不使用索引号的情况下访问带有"fieldName": "telNum"
数组元素的"value"
,因为我不知道每次这个telNum
元素会出现在哪个位置。
我的梦想是这样的:
jsonVarName.responseObject.fields['fieldname'='telNum'].value
这在 JavaScript 中可能吗?
你可以这样做
var k={
"responseObject": {
"name": "ObjectName",
"fields": [
{
"fieldName": "refId",
"value": "2170gga35511"
},
{
"fieldName": "telNum",
"value": "4541885881"
}]
}};
value1=k.responseObject.fields.find(
function(i)
{return (i.fieldName=="telNum")}).value;
console.log(value1);
有一个JSONPath,可以让你像XPATH对XML一样编写查询。
$.store.book[*].author the authors of all books in the store
$..author all authors
$.store.* all things in store, which are some books and a red bicycle.
$.store..price the price of everything in the store.
$..book[2] the third book
$..book[(@.length-1)]
$..book[-1:] the last book in order.
$..book[0,1]
$..book[:2] the first two books
$..book[?(@.isbn)] filter all books with isbn number
$..book[?(@.price<10)] filter all books cheapier than 10
$..* All members of JSON structure.
你将不得不循环并找到它。
var json = {
"responseObject": {
"name": "ObjectName",
"fields": [
{
"fieldName": "refId",
"value": "2170gga35511"
},
{
"fieldName": "telNum",
"value": "4541885881"
}]
};
function getValueForFieldName(fieldName){
for(var i=0;i<json.fields.length;i++){
if(json.fields[i].fieldName == fieldName){
return json.fields[i].value;
}
}
return false;
}
console.log(getValueForFieldName("telNum"));
将
数组修改为以fieldName
作为键的对象可能是一个更好的选择,以避免一遍又一遍地使用.find
。
fields = Object.assign({}, ...fields.map(field => {
const newField = {};
newField[field.fieldName] = field.value;
return newField;
}
这
是不可能的。原生 JavaScript 没有类似于 xml 中的 XPATH 来迭代 JSON。您必须按照注释中所述循环或使用Array.prototype.find()
。它是实验性的,仅支持Chrome 45 +,Safari 7.1 +,FF 25 +。没有IE。
示例可在此处找到
干净简单的方法来循环数组。
var json = {
"responseObject": {
"name": "ObjectName",
"fields": [
{
"fieldName": "refId",
"value": "2170gga35511"
},
{
"fieldName": "telNum",
"value": "4541885881"
}]
}
$(json.responseObject.fields).each(function (i, field) {
if (field.fieldName === "telNum") {
return field.value // break each
}
})
相关文章:
- 如何在不知道关键字的情况下访问javascript对象值
- 如何使用javascript在不更改页面的情况下访问文件上传所选文件
- 如何在不更改Javascript页面的情况下访问用户输入的电子邮件
- 在不更改html的情况下访问特定的html元素值
- react-在不破坏封装的情况下访问DOM
- Javascript在不知道所有键的情况下访问多维数组
- 在不知道名称的情况下访问 json 对象中的元素
- 是否可以在不使用索引号的情况下访问 json 数组元素
- 如何在没有“runat=server”的情况下访问 C# 代码中的 HTML 控件
- 在不使用键的情况下访问 JSON 对象中的数组
- AngularJS:如何在不通过多个$parent导航的情况下访问最顶层的范围
- 我们可以在不将其加载到无限可滚动网页中的情况下访问 DOM 元素吗?
- 如何在不回发的情况下访问 SQL 数据库中的数据
- 如何在不使用索引器(javascript)的情况下访问数组的元素
- 在没有所有子节点的情况下访问选中节点的名称'姓名
- 数组的对象数组,如何在不使用属性名的情况下访问invidual元素
- 在不创建对象实例的情况下访问原型属性
- 如何在没有id的情况下访问画布元素
- 我的JS代码如何在没有明确缓存DOM元素的情况下访问它们
- Javascript,在不知道我处于什么页面级别的情况下访问url