Airscript 1.0中用严格相等的两个数组经过find操作输出完全不同的结果

📌

let file = KSDrive.openFile("https://www.kdocs.cn/l/***********")

let userTable = file.Application.Sheets("下拉列表").Range("S2:T" + getLastRow("T", file.Application.Sheets("下拉列表"))).Value2

const data = [["袁杰", "699137023"], ["谢欣雨", "426690345"], ["罗鹏禧", "26010128"], ["杨云龙", "525520738"], ["王壮", "204965085"], ["郝岩", "21408887"], ["马贤鉴", "387424514"], ["封治虎", "304383325"], ["刘广根", "21802757"], ["黄巍", "303668736"], ["杜嘉欣", "303522614"], ["龚财全", "262845464"], ["蒋煜治", "316311955"], ["黄淦星", "229617165"], ["袁凤霞", "692022919"], ["涂灿辉", "293765139"], ["周成英", "440497131"], ["荀励治", "340588799"], ["秦尉天", "404236257"], ["张兆宇", "895531118"], ["向慧媚", "325748662"], ["杜嘉欣", "890150175"], ["罗鹏禧", "660863214"], ["谢欣雨", "243789846"]];

console.log(arraysAreEqual(data,userTable)) //返回true,表明data和userTable这两个数组严格相等

console.log(getUserName())

//getUserName函数根据当前账号的id查询表格得到对应的姓名

//getUserName函数中用data数组find返回正确结果“王壮”

//但是当getUserName函数中用userTable数组find返回不正确结果“袁杰”,data和userTable是严格相等的但是得到结果完全不一样

function getUserName() {

const result = userTable.find(person => person[1] === Application.UserInfo['id']);

return result ? result[0] : "未找到对应姓名";

}

function getLastRow(colAB, filesht) {

let end = filesht.UsedRange.RowEnd

let col = filesht.Range(colAB + "1:" + colAB + end)

let lastRow = 1

for (i = end; i > 0; i--) {

if (col.Rows(i).Value !== "" && col.Rows(i).Value !== null) {

lastRow = i

break

}

}

return lastRow

}

//以下函数用来比较两个二维数组是否严格相等,包括每一个元素的类型和数值

function arraysAreEqual(arr1, arr2) {

if (!Array.isArray(arr1) || !Array.isArray(arr2)) {

return false; // 如果不是数组,返回 false

}

if (arr1.length !== arr2.length) {

return false; // 数组长度不同,返回 false

}

for (let i = 0; i < arr1.length; i++) {

// 检查类型是否相同

if (typeof arr1[i] !== typeof arr2[i]) {

return false;

}

if (Array.isArray(arr1[i]) && Array.isArray(arr2[i])) {

// 如果元素是数组,递归比较

if (!arraysAreEqual(arr1[i], arr2[i])) {

return false;

}

} else if (arr1[i] !== arr2[i]) {

// 如果元素不是数组且值不相等,返回 false

return false;

}

}

return true; // 如果所有元素和值都相等,返回 true

}

userTable是从另一个在线表格中读取的二维数组,这个数组包含了姓名和用户id的集合。data是手动定义的二维数组,与userTable完全一致。arraysAreEqual函数用来比较两个二维数组是否严格相等,包括每一个元素的类型和数值,arraysAreEqual(data,userTable)返回true,表明这两个数组严格相等。

getUserName函数是通过当前用户id返回姓名的函数,在这个函数中如果使用data数组find方法,返回结果与预期一致。但是getUserName函数中如果使用userTable数组返回“袁杰”,即二维数组的第一项,与预期不一致。

data和userTable在严格相等的情况下还是返回了不一样的结果,不太能理解。

四川省
浏览 86
收藏
2
分享
2 +1
+1
全部评论