2017-07-18 76 views
0

比方说,你有JSON如下所示:有没有办法选择包含特定值的所有JSON对象?

[{ 
    "Rarity": "Common", 
    "EffectOne": "+4 ACC", 
    "EffectTwo": "-1 SPD", 
    "EffectThree": "", 
    }, 
{ 
    "Rarity": "Common", 
    "EffectOne": "+4 ACC", 
    "EffectTwo": "-1 SPD", 
    "EffectThree": "", 
    }, 
{ 
    "Rarity": "Rare", 
    "EffectOne": "+4 ACC", 
    "EffectTwo": "-1 SPD", 
    "EffectThree": "", 
    }] 

你怎么可以定位有属性的一个共享的价值对象,如"Rarity": "Common"

你能做吗(为了这个例子,我们假设这个JSON是刚刚命名的数据):data.rarity.common?或者它会是data.rarity("Common")。我问的原因是我实际上似乎无法在JSON jQuery文档中的任何位置找到此信息,并且我想根据特定值在不同位置填充数据。

+2

您的JSON一些额外的逗号。你可能没有在jQuery的文档中找到你需要的信息,因为这主要是在不需要库或框架(对象,数组,属性等)的情况下完成的,它们都是纯JS的基础。如果你想把你的数组缩小到只有“Rarity”:“Common”的对象,你有几个选项,主要是data = data.filter(x => x.Rarity ==“Common”); '[**一个例子**](https://jsfiddle.net/od78u3xo/) – Santi

+0

Boom,非常感谢!我似乎无法找到这个信息。非常感激! – dbrree

+2

不是问题。添加[示例](https://jsfiddle.net/od78u3xo/)来演示。另外,为了清楚起见,你无法做'data.'的原因是因为数据是一个*数组*。它没有属性,而是索引。我提供的'filter'函数简单地遍历每个项目(如'x'),并评估提供的条件('x.Rarity ==“Common”')。如果结果为'false',则从数组中删除该项目。 – Santi

回答

2

你用普通的JavaScript去了。变量common_value被设置为Common,作为罕见的过滤器。这是你想要的?

var json = [{ 
 
    "Rarity": "Common", 
 
    "EffectOne": "+4 ACC", 
 
    "EffectTwo": "-1 SPD", 
 
    "EffectThree": "", 
 
    }, 
 
{ 
 
    "Rarity": "Common", 
 
    "EffectOne": "+4 ACC", 
 
    "EffectTwo": "-1 SPD", 
 
    "EffectThree": "", 
 
    }, 
 
{ 
 
    "Rarity": "Rare", 
 
    "EffectOne": "+4 ACC", 
 
    "EffectTwo": "-1 SPD", 
 
    "EffectThree": "", 
 
    }]; 
 

 
var common_value = "Common"; 
 
var results = []; 
 

 
for(var i = 0; i < json.length; i++){ 
 
\t if(json[i].Rarity === common_value){ 
 
    \t results.push(json[i]); 
 
    } 
 
} 
 

 
console.log(results);

+0

完美!非常感谢你! – dbrree

+0

您的欢迎。请记住,您可以将“.Rarity”更改为任何用于控制过滤器的按键:-) – hallleron

相关问题