【问题标题】:Filtering JSON on string attribute with JavaScript使用 JavaScript 在字符串属性上过滤 JSON
【发布时间】:2016-01-26 13:00:29
【问题描述】:

我正在尝试根据这样的字符串属性过滤掉所有对象:

var data = $.parseJSON(valid_json); 

data = data.filter(function (el) {
  return (el.name == 'myName');
});

这会返回一个空数组,但可以比较整数:

var data = $.parseJSON(valid_json); 

data = data.filter(function (el) {
  return (el.price == 1000);
});

这将获得所有价格 = 1000 的对象

我做错了什么?

【问题讨论】:

  • 注意:== != ===,见here
  • 你为什么要解析一个有效的 json?你能发布那个json吗?
  • 它应该可以按预期工作。也许您的对象中没有“名称”属性,或者没有名称为“myName”的对象

标签: javascript jquery json filter


【解决方案1】:

如果您有一个有效的 json,那么您不必解析它来创建一个有效的 json。只有当你有一个有效的 json 字符串时才应该这样做:

var jsonstr = '{"name":"Foo", "price":"1000"}'; // this one needs parsing.

空数组的原因可能是您针对对象键的错误值或您拥有的对象中不存在该值。

实际上这对我有用:

var data = [{name:"Foo", price:1000}, {name:"Bar", price:1000}]; 

data = data.filter(function (el) {
  return (el.name == 'Foo');
});

document.body.innerHTML = '<pre>'+ JSON.stringify(data) +'</pre>';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-27
    • 2017-09-23
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 2019-09-21
    相关资源
    最近更新 更多