【问题标题】:Filter Arrays from JSON with Space values使用空格值从 JSON 中过滤数组
【发布时间】:2017-07-18 18:31:08
【问题描述】:

我想用表单输入过滤我的 JSON。

我的过滤器:

var as = $(data).filter(function (i,n){return n.name == getname});

“getname”来自 HTML 表单。

示例 JSON:

[
 {"name":"name1 addition","date":"01.02.2017"},
 {"name":"name2 addition","date":"05.02.2017"},
 {"name":"name3 addition","date":"05.03.2017"}
]

我的问题是,如果我使用文本框并且“名称”中有空格,则它不起作用导致空格。我能以某种方式解决这个问题吗?

【问题讨论】:

  • 你可以trim字符串去掉多余的空格。

标签: javascript html arrays json filtering


【解决方案1】:

test() 函数与RegExp 一起使用。

var json = [
 {"name":"name1 addition","date":"01.02.2017"},
 {"name":"name2 addition","date":"05.02.2017"},
 {"name":"name3 addition","date":"05.03.2017"}
];

function filter(json, name){
  var reg = new RegExp('name', 'g');
  var result = json.filter(v => !reg.test(v.name));
  console.log(result);
}

filter(json, 'name2 addition');

【讨论】:

  • @Justin Taddei 感谢您的编辑,但如果我接受您的评论,它将无法工作:(
  • 我不明白。因为现在没有使用 name 参数。
  • @JustinTaddei name 是函数的参数,而不是对象属性 (:
  • 参数。 . .这就是我想说的。您已经写了function filter(json, name) { . . . },但从未使用过name。这是故意的吗?
  • @Kinduser 哦,谢谢!我应该为 RegExp 雇用自己!
【解决方案2】:

我一直在玩@KindUser 的答案,发现它返回了json 数组中的每个偶数元素。我对他们的答案进行了一些更改以解决问题。

试试这个,看看它是否更适合你:

var json = [
 {"name":"name1 addition","date":"01.02.2017"},
 {"name":"name2 addition","date":"05.02.2017"},
 {"name":"name3 addition","date":"05.03.2017"},
 {"name":"name4 addition","date":"05.02.2017"},
 {"name":"name5 addition","date":"05.02.2017"},
 {"name":"name6 addition","date":"05.02.2017"}
];

function filter(json, name){
  var reg = new RegExp(name, 'g');
  var result = json.filter(v => reg.test(v.name));
  console.log(result);
}

filter(json, 'name4 addition');

【讨论】:

    猜你喜欢
    • 2021-10-30
    • 1970-01-01
    • 2016-05-28
    • 2017-08-24
    • 1970-01-01
    • 2014-10-29
    • 1970-01-01
    • 1970-01-01
    • 2019-12-30
    相关资源
    最近更新 更多