gpt4 book ai didi

javascript - 没有 toString 等的关联数组

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:20:13 25 4
gpt4 key购买 nike

我想创建一个关联数组:

var aa = {} // Equivalent to Object(), new Object(), etc...

我想确保我访问的任何 key 都将是一个数字:

aa['hey'] = 4.3;
aa['btar'] = 43.1;

我知道 JavaScript 没有类型,所以我不能自动检查这个,但我可以在我自己的代码中确保我只为这个 aa 分配字符串。

现在我正在从用户那里获取 key 。我想显示该键的值。但是,如果用户给我类似“toString”的东西,用户会得到一个函数,而不是一个 int!有没有办法确保用户给我的任何字符串都是我定义的?

唯一的解决方案是像下面这样的吗?

delete aa['toString'];
delete aa['hasOwnProperty'];

等...

最佳答案

这可能对你有用:

function getValue(id){
return (!isNaN(aa[id])) ? aa[id] : undefined;
}

或者,我推荐这个通用解决方案:

function getValue(hash,key) {
return Object.prototype.hasOwnProperty.call(hash,key) ? hash[key] : undefined;
}

请注意以下几点:键将在内部转换为字符串,因为键实际上是属性的名称。

var test = {
2: "Defined as numeric",
"2": "Defined as string"
}

alert(test[2]); // Alerts "Defined as string"

如果尝试使用对象:

var test = {}, test2 = {};
test[test2] = "message"; // Using an object as a key.

alert(test[test2]); // Alerts "message". It looks like it works...

alert(test[test2.toString()]);
// If it really was an object this would not have worked,
// but it also alerts "message".

现在您知道它始终是一个字符串,让我们使用它:

var test = {};

var test2 = {
toString:function(){return "some_unique_value";}
// Note that the attribute name (toString) don't need quotes.
}

test[test2] = "message";
alert(test["some_unique_value"]); // Alerts "message".

关于javascript - 没有 toString 等的关联数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/367440/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com