Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在不使用索引的情况下访问JSON数组值_Javascript_Arrays_Json_Parsing - Fatal编程技术网

Javascript 如何在不使用索引的情况下访问JSON数组值

Javascript 如何在不使用索引的情况下访问JSON数组值,javascript,arrays,json,parsing,Javascript,Arrays,Json,Parsing,我向API发出了一个请求,该API返回一个JSON数组,如下所示: 我的最终目标是获取属性“State”,并找到所有“EventName”(s),其中状态为:“PR”(或另一个状态。我从用户下拉列表中获取状态输入)并将其放入列表中 我知道我可以使用索引(例如:event\u data[0]。State返回“PR”)来获取单个属性,但如何避免使用索引来获取整个数组中的所有State值(或EventName值)?或者这更明智? 我试过下面的方法,但它似乎只是获取了所有的EventName值,而不仅

我向API发出了一个请求,该API返回一个JSON数组,如下所示:

我的最终目标是获取属性“State”,并找到所有“EventName”(s),其中
状态为:“PR”
(或另一个状态。我从用户下拉列表中获取状态输入)并将其放入列表中

我知道我可以使用索引(例如:
event\u data[0]。State
返回“PR”)来获取单个属性,但如何避免使用索引来获取整个数组中的所有
State
值(或
EventName
值)?或者这更明智? 我试过下面的方法,但它似乎只是获取了所有的
EventName
值,而不仅仅是那些“PR”值。预期输出应该是“PR”的事件名称列表,如
PR_list=[“Debby 2000”、“Dean 2001”、“Jeane 2004”…“Maria 2017”]

pr_list=[];
对于(i=0;i
为此,您可以使用和:

pr_list = event_data.filter(event => (event.State === "PR")).map(event => event.EventName)
filtered\u events=event\u data.filter(event=>(event.State==“PR”);
pr_list=filtered_events.map(event=>event.EventName);

关于您现有的代码-您有一个输入错误:

if(state_data=“PR”){…}
应该是:

if(state_data==“PR”){…}

()

本地方式

const finalArray=[];
const event_data=[{EventName:'Event1',State:'PR'},{EventName:'Event2',State:'PQ'}];
对于(i=0;i您可以为此使用和:

pr_list = event_data.filter(event => (event.State === "PR")).map(event => event.EventName)
对于单一性,请使用:


您可以使用
array.filter()
函数获取列表的状态为
PR
array.map()
函数获取列表的所有
eventId

var数组=[
{eventId:'1',State:'PR'},
{eventId:'2',State:'AR'},
{eventId:'3',State:'PR'}
];
//获取状态为PR的所有事件
array=array.filter(函数(事件){
返回事件。状态==“PR”;
});
//将所有eventId放入新数组中
var eventIds=array.map(函数(事件){
return event.eventId
});

log('eventid:',eventid)
请分享您在
if
语句中缺少的预期输出==如果(state_data=“PR”)
-您执行的是赋值,而不是比较,这就是为什么它需要所有
事件名
,而不仅仅是那些状态等于“PR”的事件名。这在前面非常有效,但我只需要“PR”列表中的事件名值
pr\u list=event\u data.filter(event.EventName=>(event.State==“pr”)
不太管用。@gwydion93我注意到在我发布了我的答案后,它现在应该可以做你想要的事情了,而且效果非常好!关键是
过滤器
。我喜欢这个解决方案。我想改用eventName,但拥有一个新的数组而不仅仅是一个列表可能会很有用。我很高兴知道你喜欢这个解决方案。
pr_list = [...new Set(event_data.filter(event => (event.State === "PR")).map(event => event.EventName))]