簡體   English   中英

json jquery 濾波器 javascript 陣列

[英]json jquery filter javascript array

我有一個 json object 陣列。 我想搜索數組,並為每個 object 創建一個“服務”列表,該列表是以逗號分隔的所有值為“是”的鍵的列表。 帶有服務列表的 json 對象列表然后使用 jquery 的每個顯示在 html 中。

它是一個大的 json 文件,所以我想盡可能高效地完成它。

我已經通過 jQuery 的 each(即 obj.name)訪問了對象的屬性——所以我認為應該可以使用 jQuery 的過濾器過濾為每個 object 列出的服務,然后在值為 yes 時顯示鍵。

但似乎更有效的選擇可能是創建一個新的 javascript 數組,以 yes 值加入服務,然后將該變量添加到附加的 html 中。

我不確定哪個會更快,而且到目前為止都沒有非常成功......所以任何建議和示例都會非常有幫助。

json 陣列如下所示:

[
 {"name":"name1",
  "service1":"y",
  "service2":"y",
  "service3":"n",
 },

 {"name":"name2",
  "service1":"n",
  "service2":"y",
  "service3":"n",
 },
];

如果您只想過濾數組,請使用 grep。

grep - 查找滿足過濾器 function 的數組元素。 原始數組不受影響。

http://api.jquery.com/jQuery.grep/

首先,刪除尾隨逗號。 Internet Explorer 真的被他們弄糊塗了。 無論如何,當你說“每個值”時,我假設你不想“搜索”數組; 您想遍歷數組並將其解析為更可用的列表。 我建議的第一種方法只是將你想要的作為你想要的數組傳遞,但如果這不是一個選項,你正在尋找的是這個的一些變體,它應該是相當有效的( jsFiddle 示例):

var json = [
  {"name":"name1", "service1":"y", "service2":"y", "service3":"n"},
  {"name":"name2", "service1":"n", "service2":"y", "service3":"n"}
];
var parsed = {};

for (var i = 0, iLen = json.length; i < iLen; i++) {
  // Assuming all we need are the name and a list
  var name;
  var list = [];

  for (var key in json[i]) {
    var value = json[i][key];

    // We need to hold on to the name or any services with value "y"        
    if (key === "name") {
      name = value;
    } else if (value === "y") {
      list.push(key);
    }
  }

  // Add them to the parsed array however you'd like
  // I'm assuming you want to just list them in plain text
  parsed[name] = list.join(", ");
}

// List them on the web page
for (var key in parsed) {
  document.write(key + ": " + parsed[key] + "<br>");
}

這樣一來,您就可以向訪問者展示可用的服務,並且在必要時仍然保留一個數組以供進一步使用。

jQuery.inArray() 在數組中搜索指定值並返回其索引(如果未找到,則返回 -1)。

http://api.jquery.com/jQuery.inArray/

或者

http://api.jquery.com/jQuery.each/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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