簡體   English   中英

從數組創建JSON對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM