JavaScript/TypeScript中的连续分配数组,带有字符串

JavaScript/TypeScript中的连续分配数组,带有字符串,javascript,arrays,typescript,memory-management,v8,Javascript,Arrays,Typescript,Memory Management,V8,我有一个这样的系统: interface Data { x: number; y: number; n: string; } const array = Array<Data>(100); interface Data { x: Float64Array; y: Float64Array; n: ????; } const dataAr

我有一个这样的系统:

    interface Data {
        x: number;
        y: number;
        n: string;
    }

    const array = Array<Data>(100);
    interface Data {
        x: Float64Array;
        y: Float64Array;
        n: ????;
    }

    const dataArray = {
        x: new Float64Array(100),
        y: new Float64Array(100),
        n: ????????
    } as Data
但是,我不知道如何在这样的数组中存储字符串。var dataArray=newarray100将为您提供一个包含100个指针的连续数组,因此从这个意义上讲,它将类似于C,而不是字典。dataArray[0]=新的Datax,y,n将在数组外部分配一个新的数据对象,并在数组的第一个插槽中存储指向它的指针。在这样的数据对象中,在64位平台上,V8可以将数字直接存储在示例中的对象x和y中,而字符串和其他对象将始终存储为指向另一个对象的指针。在只包含数字的数组中,V8还可以将数字直接存储在数组中,因此不需要使用Float64Array

总而言之,任何性能差异都可能太小而无关紧要,因此我建议您编写对您最有意义、可读性最好、最适合您的算法/数据模型等的代码。

V8开发者在此。var dataArray=newarray100将为您提供一个包含100个指针的连续数组,因此从这个意义上讲,它将类似于C,而不是字典。dataArray[0]=新的Datax,y,n将在数组外部分配一个新的数据对象,并在数组的第一个插槽中存储指向它的指针。在这样的数据对象中,在64位平台上,V8可以将数字直接存储在示例中的对象x和y中,而字符串和其他对象将始终存储为指向另一个对象的指针。在只包含数字的数组中,V8还可以将数字直接存储在数组中,因此不需要使用Float64Array

尽管如此,任何性能差异都可能太小而无关紧要,因此我建议您编写对您最有意义、可读性最好、最适合您的算法/数据模型的代码,等等