javascript,我可以在一个声明/行中完成吗?

javascript,我可以在一个声明/行中完成吗?,javascript,Javascript,有时候我需要一个更复杂的JavaScript对象,我通常会这样做 var myVar = ArrayWithMetaData(GetStringArray(),{description: "These are numbers", ...}); function ArrayWithMetaData(arr, params){ var temp = params; for(var i = 0; i < arr.length; i++) temp[i] = ar

有时候我需要一个更复杂的JavaScript对象,我通常会这样做

var myVar = ArrayWithMetaData(GetStringArray(),{description: "These are numbers", ...});

function ArrayWithMetaData(arr, params){
    var temp = params;
    for(var i = 0; i < arr.length; i++)
        temp[i] = arr[i];
    return temp;
}

//TODO: Returns an array i.e. ["one", "two", "three"], may be very large 
function GetStringArray() {}
是否有一种较短的方法来实现这一点,或者是否有提供类似功能的库

另外,这种类型的javascript变量有名称吗?

好的,您可以这样做:

var myVar = ["one", "two", "three"];
myVar.description = "These are numbers";
数组实例是对象,就像其他对象一样事实上,在JavaScript中,您可以直接向它们添加任意属性。如果您这样做了,并且有很多使用案例,只需确保您没有使用中的..,请参阅:

但是,上面的内容与函数的结果并不完全相似,因为函数的结果不再是数组,而上面的内容将数组保留为真实数组,因此,如果愿意,可以执行所有仅与数值属性(索引)相关的操作。如果确实希望它不是数组,可以执行以下操作:

var myVar = {
    0: "one",
    1: "two",
    2: "three",
    description: "These are numbers"
};
这有时被称为对象文字。

您可以这样做:

var myVar = ["one", "two", "three"];
myVar.description = "These are numbers";
数组实例是对象,就像其他对象一样事实上,在JavaScript中,您可以直接向它们添加任意属性。如果您这样做了,并且有很多使用案例,只需确保您没有使用中的..,请参阅:

但是,上面的内容与函数的结果并不完全相似,因为函数的结果不再是数组,而上面的内容将数组保留为真实数组,因此,如果愿意,可以执行所有仅与数值属性(索引)相关的操作。如果确实希望它不是数组,可以执行以下操作:

var myVar = {
    0: "one",
    1: "two",
    2: "three",
    description: "These are numbers"
};

这有时被称为对象文字。

从技术上讲,函数返回的对象不是数组,因为您只需将arr的每个项复制到param的新属性。相反,我会:

function ArrayWithMetaData(arr, params){
    for(var k in params)
        arr[k] = params[k];
    return arr;
}

通过这种方式,您仍然可以访问数组的所有原型方法,以及ArrayWithMetaData[],Array==true。

从技术上讲,函数返回的对象不是数组,因为您只需将arr的每个项复制到param的新属性。相反,我会:

function ArrayWithMetaData(arr, params){
    for(var k in params)
        arr[k] = params[k];
    return arr;
}

通过这种方式,您仍然可以访问数组的所有原型方法,以及ArrayWithMetaData[],{}instanceof Array==true。

另一个选项是使用纯json定义对象,其中数组是一个属性,如:

var myVar = {"description": "These are numbers", "values": ["one", "two", "three"]};

然后,您只需使用myVar.values访问数组。

另一个选项是使用纯json定义对象,其中数组是一个属性,如:

var myVar = {"description": "These are numbers", "values": ["one", "two", "three"]};

然后,您只需使用myVar.values访问数组。

谢谢您提供的信息,不过我希望有更通用的内容。我将更新我的问题以反映这一点。@BiffMaGriff:以上两种都是相当通用的,不是吗?您可以自由地向任何数组添加任意非索引属性;您可以自由地向非数组对象添加类似索引的属性。感谢您提供的信息,不过我希望有一些更通用的内容。我将更新我的问题以反映这一点。@BiffMaGriff:以上两种都是相当通用的,不是吗?您可以自由地向任何数组添加任意非索引属性;您可以自由地向非数组对象添加类似索引的属性。。。这不是JSON,而是JavaScript对象初始值设定项;在JavaScript代码中不直接使用JSON。JSON是一种在源代码之外使用的文本表示法,例如,在数据文件或网络中。如果是JSON,它将是无效的,JSON要求键[description and values]用双引号括起来。足够公平-我添加了引号。但问题是:它不是JSON。即使有引用。将其称为JSON是一种误导。你知道,不是以一种邪恶的方式;以一种永久的误解的方式。不完全是我想要的,但它很好地符合一行。谢谢Mike.TJ-根据[JSON是JavaScript对象文字表示的子集。因为JSON是JavaScript的一个子集,所以它可以在语言中使用…-jSON.org对JSON文本进行区分,我认为JSON文本是指JSON和对象文字表示法中所指的,这是我上面使用的。我不知道您是否考虑JS。on.org authoritive-如果你知道一个更好的json信息源,请留下一个链接。谢谢:-另一个选项是用纯json定义一个对象…这不是json,这是一个JavaScript对象初始值设定项;你不直接在JavaScript代码中使用json。json是一种在源代码之外使用的文本符号,例如,在数据文件或其他文件中-如果它是JSON,它将无效,JSON需要键[description and values]使用双引号。足够公平-我添加了引号。但重点是:它不是JSON。即使使用引号。称它为JSON也是误导性的。不是以一种非常邪恶的方式,你知道;以一种永久的误解方式。不完全是我想要的,但它很好地符合一行。感谢Mike.TJ-根据[,JSON是一个子集 JavaScript的对象文字表示法。因为JSON是JavaScript的一个子集,所以它可以在语言中使用…-org区分了“json文本”,我认为这是你说json时所指的内容,以及我上面使用的对象文字符号。我不知道你是否考虑JSON.org权威——如果你知道JSON信息的更好来源,请留下一个链接。谢谢:-