评论商品接口有问题
This commit is contained in:
41
uni_modules/lime-shared/assignAtIndex/index.ts
Normal file
41
uni_modules/lime-shared/assignAtIndex/index.ts
Normal file
@@ -0,0 +1,41 @@
|
||||
/**
|
||||
* 安全地在数组指定索引处赋值,兼容 Android 平台对稀疏数组的限制。
|
||||
*
|
||||
* 行为说明:
|
||||
* - 非 Android:等同于 arr[index] = value(可能产生稀疏数组)
|
||||
* - Android:若 index >= length,则先用 undefined 填充至 index,再赋值(紧凑数组,无空槽)
|
||||
*
|
||||
* @param arr - 目标数组(会被修改)
|
||||
* @param index - 非负整数索引
|
||||
* @param value - 要设置的值
|
||||
* @throws {Error} 如果 index 不是非负整数
|
||||
*/
|
||||
export function assignAtIndex<T>(arr : T[], index : number, value : T) : void {
|
||||
|
||||
// 输入校验
|
||||
if (index < 0) {
|
||||
throw new Error(`Index must be a non-negative integer, got ${index}`);
|
||||
}
|
||||
|
||||
// #ifndef APP-ANDROID
|
||||
// 标准环境:直接赋值(允许稀疏数组)
|
||||
arr[index] = value;
|
||||
// #endif
|
||||
|
||||
// #ifdef APP-ANDROID
|
||||
// Android 环境:安全赋值,避免稀疏数组导致的异常
|
||||
if (index < arr.length) {
|
||||
arr[index] = value;
|
||||
} else {
|
||||
// 手动扩展数组,中间填充 undefined
|
||||
// 注意:使用 push(undefined) 而不是 arr[length++] = undefined,
|
||||
// 因为某些 Android 引擎对直接 length 赋值也敏感
|
||||
while (arr.length <= index) {
|
||||
arr.push(null as T);
|
||||
}
|
||||
|
||||
// arr.set(index, value)
|
||||
arr[index] = value;
|
||||
}
|
||||
// #endif
|
||||
}
|
||||
Reference in New Issue
Block a user