首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >json jquery过滤器javascript数组

json jquery过滤器javascript数组
EN

Stack Overflow用户
提问于 2011-06-15 00:51:44
回答 3查看 10.5K关注 0票数 1

我有一个json对象数组。我想要搜索数组,并为每个对象创建一个'services‘列表,该列表是一个逗号分隔的列表,其中包含所有值为"yes“的键。然后,使用jquery的each以html格式显示带有服务列表的json对象列表。

这是一个很大的json文件,所以我想尽可能高效地完成它。

我已经通过jQuery的each (即,obj.name)访问了对象的属性--所以我认为应该可以使用jQuery的过滤器来过滤为每个对象列出的服务,如果值为yes,则显示键。

但似乎更有效的选择可能是创建一个新的javascript数组,使用值yes连接服务,然后将该变量添加到附加的html中。

我不确定哪个会更快,而且到目前为止在这两个方面都不是很成功……因此,任何建议和示例都会非常有帮助。

下面是json数组的样子:

代码语言:javascript
运行
复制
[
 {"name":"name1",
  "service1":"y",
  "service2":"y",
  "service3":"n",
 },

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

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-15 01:02:53

首先,删除尾随的逗号。by浏览器真的真的被它们搞糊涂了。无论如何,当您说"for each value“时,我假设您不想”搜索“数组;您希望遍历数组并将其解析为更有用的列表。我建议的第一种方法是传递你想要的数组作为你想要的数组,但是如果这不是一个选项,你要寻找的是它的一些变体,这应该是相当有效的(jsFiddle example):

代码语言:javascript
运行
复制
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>");
}

这样,您就可以向访问者显示可用的服务,并且仍然保留一个数组,以便在必要时进一步使用。

票数 2
EN

Stack Overflow用户

发布于 2011-06-15 01:20:51

如果您只想过滤数组,那么可以使用grep。

grep -查找满足过滤函数的数组元素。原始数组不受影响。

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

票数 4
EN

Stack Overflow用户

发布于 2011-06-15 01:02:39

jQuery.inArray()在数组中搜索指定值并返回其索引(如果未找到,则返回-1 )。

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6347137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档