[英]Create JSON object from array
我有一個輸入字段#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];
};
});
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;
})
})
簡化標簽圖(如果可能)將使其更容易
var tags = { "php" : "x&8j", "ruby" : "x&8jX90" }
$(function() {
$('#tag_field').on('blur', function(e) {
if(tags[$.trim($(this).val())]) {
console.log('tag exists')
} else {
console.log('tag does not exist')
}
})
})
如果可用,最好使用Array.some :
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.
}
});
請注意,這是我定義的區分大小寫的代碼,但是可以通過在needle
以及比較期間的每個標簽上調用String.toLowerCase()
輕松進行調整。
最后,也許我已經太挑剔了,但是從技術上來說,您的標記圖不是JSON對象; 它只是一個對象數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.