You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何筛选数组中以'EV'开头的元素:针对buildEVQuestionLists函数返回结果的处理方案

如何过滤数组,仅保留以'EV'开头的元素?

假设我们有一个返回混合前缀ID数组的函数buildEVQuestionLists(category):

function buildEVQuestionLists(category) { 
    var items = []; 
    var mySurvey = SurveyUtil.Surveys.Get(CurrentPID()); 
    var remoteQuestions = mySurvey.Questions; 
    for (var i = 0; i < remoteQuestions.Count; i++) { 
        var question = remoteQuestions[i]; 
        if (question.IsInCategory(category)) items.push(question.Id); 
    } 
    return items; 
}

它返回的数组类似:[EV10013,EV10361,EV10022,EV10009,EV10003,EV10025,EV10020,EV10017,EV10005,EV10000,EV10043,PH10040,PH10013],现在需要处理这个结果,只保留以'EV'开头的元素,这里有几种实用的实现方式:


方案1:使用数组filter()方法(推荐,简洁高效)

如果可以直接处理函数返回的结果,用Array.filter()搭配字符串startsWith()是最简洁的写法:

// 获取原函数的完整结果
const allQuestions = buildEVQuestionLists('你的分类参数');
// 过滤仅保留EV开头的元素
const evOnlyQuestions = allQuestions.filter(id => id.startsWith('EV'));

console.log(evOnlyQuestions);
// 输出: [EV10013,EV10361,EV10022,EV10009,EV10003,EV10025,EV10020,EV10017,EV10005,EV10000,EV10043]

如果你的运行环境不支持ES6箭头函数或startsWith()(比如旧版IE),可以换成兼容写法:

var allQuestions = buildEVQuestionLists('你的分类参数');
var evOnlyQuestions = allQuestions.filter(function(id) {
    // 用indexOf判断字符串是否以EV开头,兼容所有旧环境
    return id.indexOf('EV') === 0;
});

方案2:直接修改原函数,收集时就过滤

如果你希望原函数直接返回过滤后的结果,可以在收集元素时多加一层判断:

function buildEVQuestionLists(category) { 
    var items = []; 
    var mySurvey = SurveyUtil.Surveys.Get(CurrentPID()); 
    var remoteQuestions = mySurvey.Questions; 
    for (var i = 0; i < remoteQuestions.Count; i++) { 
        var question = remoteQuestions[i]; 
        // 同时满足分类归属和EV前缀两个条件
        if (question.IsInCategory(category) && question.Id.startsWith('EV')) {
            items.push(question.Id);
        }
    } 
    return items; 
}

旧环境兼容版:

if (question.IsInCategory(category) && question.Id.indexOf('EV') === 0) {
    items.push(question.Id);
}

方案3:传统for循环手动过滤(兼容所有环境)

如果不想用数组方法,也可以手动遍历原数组收集符合条件的元素:

var allQuestions = buildEVQuestionLists('你的分类参数');
var evOnlyQuestions = [];
for (var i = 0; i < allQuestions.length; i++) {
    var id = allQuestions[i];
    if (id.indexOf('EV') === 0) {
        evOnlyQuestions.push(id);
    }
}

这样也能得到完全一致的过滤结果。


内容的提问来源于stack exchange,提问作者Andrea Springer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 08:22:42