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;
    })
})