Javascript 如何在不使用索引的情况下访问JSON数组值
我向API发出了一个请求,该API返回一个JSON数组,如下所示: 我的最终目标是获取属性“State”,并找到所有“EventName”(s),其中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值,而不仅
状态为:“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))]