Javascript 为数组指定一个值,并在其中列出一个列表

Javascript 为数组指定一个值,并在其中列出一个列表,javascript,arrays,Javascript,Arrays,我希望在数组中的某个项中创建一个列表,但仍保留该项的值?有办法吗 resources: { hyphens: 0{ rate: 0 }, ores: 0, pitchforks: 0 我希望resources.hyphens返回一个数字,因为我在另一个文件中引用了相当多的数字。但我也希望能够从resources.hyphens.rate中调用一个值,该值是播种在resources.hyphens中的。有什么

我希望在数组中的某个项中创建一个列表,但仍保留该项的值?有办法吗

resources: {
        hyphens: 0{
            rate: 0
        },
        ores: 0,
        pitchforks: 0

我希望
resources.hyphens
返回一个数字,因为我在另一个文件中引用了相当多的数字。但我也希望能够从
resources.hyphens.rate
中调用一个值,该值是播种在
resources.hyphens
中的。有什么办法吗?

您可以创建
toString
valueOf
方法作为对象的自有属性。当JS需要将对象转换为字符串或数字时,可以使用这些方法。通常您会看到它们返回“[object object]”,但例如,
Date
的实例在转换为字符串时将返回一个日期字符串

resources: {
        hyphens: 0{
            rate: 0
        },
        ores: 0,
        pitchforks: 0
创建自己的转换方法:

var resources = {
    hyphens: {
        rate: 5
    },
    ores: 0,
    pitchforks: 0
};

Object.defineProperties(resources.hyphens, {
    valueOf: {value: function () {return 10;}},
    toString: {value: function () {return 10;}}
});

您也可以在对象定义中创建这些属性,但这样做将保护这些属性,并使它们也不可枚举


请注意,直接记录
resources.hyphens
将向您显示对象结构,在代码中,它的行为类似于需要转换时的数字。

语法中有一个错误,在数组中打开花括号Push对象之前,不能有
0
。。对象是键值对数据的集合。对象中可以有任何类型的数据。我认为你无法完成你的要求。如果希望
hyphen
返回数字,则该数字必须是对象属性。如果希望它具有自己的属性(即
hyphens.rate
),则需要将其设置为对象。但你不能两者兼得。您可以添加另一个属性,如
hyphen.number
,该属性将返回
0
,但在编写时,这是一个语法错误。@Johnny仅供参考,代码中没有数组,只有对象
[1,2,3]
是一个数组,
{“prop”:“key”}
是一个对象(用javascript术语)我会重构你的代码,而不是试图用奇怪的getter和setter以及
toString
valueOf
方法来掩盖遗留问题。谢谢你的帮助!但是看到你需要做很多额外的事情,我想每个人都应该说我应该重做我的代码以提高效率。