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

如何检查数组是否包含指定元素?JScript中indexOf/includes报错问题

JScript数组检查元素报错:indexOf/includes无法使用

问题场景

在Directory Opus的JScript脚本中,尝试使用indexOf()或includes()检查数组元素时,均报错Object doesn't support this property or method (0x800a01b6),代码示例:

function OnTestCmd(scriptCmdData){
    print(["Jenny", "Matilda", "Greta"].indexOf("Matilda"))     //Error: Object doesn't support this property or method (0x800a01b6)
    print(["Jenny", "Matilda", "Greta"].includes("Matilda"))   //Error: Object doesn't support this property or method (0x800a01b6)
    
    arr = new Array("Jenny", "Matilda", "Greta")
    print(arr.indexOf("Greta"))                               //Error: Object doesn't support this property or method (0x800a01b6)
}

function print(str){
    DOpus.Output(str)
}

注:print函数仅封装DOpus.Output(),功能正常。

原因

当前使用的JScript环境(如Directory Opus内置引擎)属于旧版本,未实现ES6的includes()方法,甚至ES5的indexOf()也可能未被原生支持,导致调用报错。

解决方案

方案1:手动实现数组包含检查函数

无需依赖原生方法,自己遍历数组判断:

// 自定义数组包含检查函数
function arrayContains(arr, targetItem) {
    for (var i = 0; i < arr.length; i++) {
        if (arr[i] === targetItem) {
            return true;
        }
    }
    return false;
}

function OnTestCmd(scriptCmdData){
    var arr = new Array("Jenny", "Matilda", "Greta");
    print(arrayContains(arr, "Matilda")); // 输出true
    print(arrayContains(arr, "Greta"));   // 输出true
    print(arrayContains(arr, "Unknown")); // 输出false
}

function print(str){
    DOpus.Output(str);
}

方案2:给Array原型添加indexOf polyfill

如果需要使用indexOf()的返回索引功能,可以给Array原型补全该方法:

// 仅当原生indexOf不存在时添加polyfill
if (!Array.prototype.indexOf) {
    Array.prototype.indexOf = function(targetItem) {
        for (var i = 0; i < this.length; i++) {
            if (this[i] === targetItem) {
                return i;
            }
        }
        return -1; // 未找到返回-1
    };
}

function OnTestCmd(scriptCmdData){
    var arr = new Array("Jenny", "Matilda", "Greta");
    print(arr.indexOf("Matilda")); // 输出1
    print(arr.indexOf("Greta"));   // 输出2
    print(arr.indexOf("Unknown")); // 输出-1
}

function print(str){
    DOpus.Output(str);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 07:15:10