Javascript 从数组创建JSON对象
我有一个输入字段,Javascript 从数组创建JSON对象,javascript,jquery,json,Javascript,Jquery,Json,我有一个输入字段,#tag_field,用户在其中输入一个标记,然后我想检查JSON对象中是否存在指定的值 下面是我当前正在使用的代码,但不确定如何将用户输入传递到blur()事件上的函数 var tags = [ { "tag": "php", "id": "x&8j" },
#tag_field
,用户在其中输入一个标记,然后我想检查JSON对象中是否存在指定的值
下面是我当前正在使用的代码,但不确定如何将用户输入传递到blur()
事件上的函数
var tags = [
{
"tag": "php",
"id": "x&8j"
},
{
"tag": "ruby",
"id": "x&8jX90"
}
];
$j('#tag_field').blur(function(){
var tagMap = {};
var i = null;
for (i = 0; tags.length > i; i += 1) {
tagMap[tags[i].tagName] = tags[i];
}
var hasTag = function(tagName) {
return tagMap[tagName];
};
});
你是说一些吗
您是否只需要获取输入值并将其与标记对象中的名称进行比较
$('#tag_field').blur(function() {
var tagMap = {};
var i = null;
for (i = 0; tags.length > i; i += 1) {
if (tags[i].tag == $(this).val()) alert('exist' + tags[i].id)
//Check
}
var hasTag = function(tagName) {
return tagMap[tagName];
};
});
你是说一些吗
您是否只需要获取输入值并将其与标记对象中的名称进行比较
$('#tag_field').blur(function() {
var tagMap = {};
var i = null;
for (i = 0; tags.length > i; i += 1) {
if (tags[i].tag == $(this).val()) alert('exist' + tags[i].id)
//Check
}
var hasTag = function(tagName) {
return tagMap[tagName];
};
});
如果可用,您最好使用:
function tagExists(needle, haystack) {
if (Array.prototype.some) {
return haystack.some(function(element) {
return element.tag == needle
});
} else {
for(i in haystack) {
if(typeof(haystack[i]) == 'object' && haystack[i].tag == needle) {
return true;
}
}
return false;
}
}
要在特定场景中使用它,请遵循以下几点:
$('#tag_field').on('blur', function() {
if(tagExists($(this).val(), tags) {
// Tag exists.
}
});
请注意,正如我定义的那样,这是区分大小写的,但是可以通过调用指针上的String.toLowerCase()
以及比较期间的每个标记来轻松调整
最后,也许我太挑剔了,但从技术上讲,您的标记映射不是JSON对象;它只是一个对象数组。如果可用,最好使用:
function tagExists(needle, haystack) {
if (Array.prototype.some) {
return haystack.some(function(element) {
return element.tag == needle
});
} else {
for(i in haystack) {
if(typeof(haystack[i]) == 'object' && haystack[i].tag == needle) {
return true;
}
}
return false;
}
}
var tags = [
{
"tag": "php",
"id": "x&8j"
},
{
"tag": "ruby",
"id": "x&8jX90"
}
]
$(function() {
$('#tag_field').on('blur', function(e) {
var $this = $(this), val = $.trim($this.val());
if (!val) return false;
for(var i=0, l=tags.length;i<l;i++) {
if (tags[i]['tag'] === val) {
console.log('tag exists')
return tags[i]['tag'];
}
}
console.log('tag does not exist');
return false;
})
})
要在特定场景中使用它,请遵循以下几点:
$('#tag_field').on('blur', function() {
if(tagExists($(this).val(), tags) {
// Tag exists.
}
});
请注意,正如我定义的那样,这是区分大小写的,但是可以通过调用指针上的String.toLowerCase()
以及比较期间的每个标记来轻松调整
最后,也许我太挑剔了,但从技术上讲,您的标记映射不是JSON对象;它只是一个对象数组
var tags = [
{
"tag": "php",
"id": "x&8j"
},
{
"tag": "ruby",
"id": "x&8jX90"
}
]
$(function() {
$('#tag_field').on('blur', function(e) {
var $this = $(this), val = $.trim($this.val());
if (!val) return false;
for(var i=0, l=tags.length;i<l;i++) {
if (tags[i]['tag'] === val) {
console.log('tag exists')
return tags[i]['tag'];
}
}
console.log('tag does not exist');
return false;
})
})