连接不同类型的数组
Concatinate different type arrays
假设,array1 = ['B', 'G', 'R', 'A']
,array2是Uint8Array
,如何连接这两个数组?
我用了var array3 = array1.concat(array2)
,但是结果好像不对,而且array3.length总是5,不管array2的内容如何。
您的结果 (array3
) 也必须是一个 Uint8Array
数组。
因此,在您的示例中,以下内容应该可以满足您的需求:
const array3 = new Uint8Array([ ...array1, ...array2]);
你可以这样做:
var array2 = Array.from(uint8Array);
var array3 = array1.concat(array2);
您的代码正在创建一个新数组,其中包含四个字符串,后跟 Uint8Array
作为单个元素。
Array.prototype.concat
is an odd beast. If you give it arguments that aren't "concat
spreadable”(例如,不是数组的东西),它将这些值作为简单元素包含在它创建的数组中。
类型化数组 concat
不可扩展:
const uint8 = Uint8Array.from([3, 4]);
console.log(uint8[Symbol.isConcatSpreadable]); // undefined (and the default is false)
const softArray = [1, 2];
const result = softArray.concat(uint8);
console.log(result.length); // 3
console.log(result[0]); // 1
console.log(result[1]); // 2
console.log(result[2]); // (A Uint8Array containing 3, 4)
您可以使用点差代替 concat
:
const array1 = ['B', 'G', 'R', 'A'];
const array2 = Uint8Array.from([1, 2, 3]);
const result = [...array1, ...array2];
console.log(result); // ["B", "g", "R", "a", 1, 2, 3]
假设,array1 = ['B', 'G', 'R', 'A']
,array2是Uint8Array
,如何连接这两个数组?
我用了var array3 = array1.concat(array2)
,但是结果好像不对,而且array3.length总是5,不管array2的内容如何。
您的结果 (array3
) 也必须是一个 Uint8Array
数组。
因此,在您的示例中,以下内容应该可以满足您的需求:
const array3 = new Uint8Array([ ...array1, ...array2]);
你可以这样做:
var array2 = Array.from(uint8Array);
var array3 = array1.concat(array2);
您的代码正在创建一个新数组,其中包含四个字符串,后跟 Uint8Array
作为单个元素。
Array.prototype.concat
is an odd beast. If you give it arguments that aren't "concat
spreadable”(例如,不是数组的东西),它将这些值作为简单元素包含在它创建的数组中。
类型化数组 concat
不可扩展:
const uint8 = Uint8Array.from([3, 4]);
console.log(uint8[Symbol.isConcatSpreadable]); // undefined (and the default is false)
const softArray = [1, 2];
const result = softArray.concat(uint8);
console.log(result.length); // 3
console.log(result[0]); // 1
console.log(result[1]); // 2
console.log(result[2]); // (A Uint8Array containing 3, 4)
您可以使用点差代替 concat
:
const array1 = ['B', 'G', 'R', 'A'];
const array2 = Uint8Array.from([1, 2, 3]);
const result = [...array1, ...array2];
console.log(result); // ["B", "g", "R", "a", 1, 2, 3]