首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Javascript数组或对象的区别以及如何获得索引。

Javascript数组或对象的区别以及如何获得索引。
EN

Stack Overflow用户
提问于 2011-07-31 01:41:33
回答 4查看 156关注 0票数 0

从下面的代码可以看出,函数菜单是用三个参数调用的。从菜单函数中,如何根据调用的菜单来获取名称或不同的名称?

代码语言:javascript
运行
复制
var menus = {
    name: menu('Control', [
    {
        label: 'Public Class My Robot',
        trigger: true,
        script: 'public class MyRobot extends SimpleRobot\n{\n[[next]]\n}\n',
        helptext: "Beginning fo your program",
        depend: "package edu.team2648.frcEasyJ;"
    }], false),
    diffname: menu('Control2', [
    {
        label: 'Public Class My Robot',
        trigger: true,
        script: 'public class MyRobot extends SimpleRobot\n{\n[[next]]\n}\n',
        helptext: "Beginning fo your program",
        depend: "package edu.team2648.frcEasyJ;"
    }], false),
};

另外,菜单是什么类型的变量?(数组,对象,...?)下面两段代码有什么不同:

代码语言:javascript
运行
复制
var test = ["str1","str2","str3","str4"];

var test2 = {id:"str1",id2:"str2",id3:"str3",id4:"str4"};
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-07-31 01:51:18

由于JavaScript中没有关联数组,因此如果要分配key:val对并模拟关联数组功能和引用行为,则需要使用对象。

var test = ["str1","str2","str3","str4"];表示数字索引的数组。我们看到对数组进行分组的方括号,并且我们只看到逗号分隔的值。如果我们想访问'str3‘,我们会使用test[2]

var test2 = {id:"str1",id2:"str2",id3:"str3",id4:"str4"};是一个对象。我们可以看到对对象参数进行分组的花括号,还可以看到键:val对被冒号分割。如果我们想访问'str3',我们会使用test2.id3

初学者可能会感到困惑的一件事是,对象可以包含数组,而数组可以包含对象,因此方括号和花括号可以混合在一起,并且不会立即明显。可以通过像var arr = new Array()这样的数组对象创建数组。为了简单起见,将它们分开,并根据它们的预期行为调用它们:[] =[]{} = object。

在您的示例中:

代码语言:javascript
运行
复制
var menus = {
    name: menu('Control', [
    {
        label: 'Public Class My Robot',
        ....

您可以看到menus是一个对象,因为它被分配给了一个大括号。您可以看到,name是一个键,menu('Control'是一个值,在本例中恰好是一个函数。它的第一个参数是一个显而易见的字符串,它的第二个参数是一个只包含一个值的数组[],它是一个具有键的对象{}:val对- label是键,'Public Class My Robot'是值,在本例中只是一个字符串。

票数 3
EN

Stack Overflow用户

发布于 2011-07-31 01:45:39

test是一个数组,test2是一个对象。

菜单是一个对象。

票数 0
EN

Stack Overflow用户

发布于 2011-07-31 01:51:28

test变量赋给Array文本。将test2变量赋给Object文本。

我读到过--但无法确认--从技术上讲,ArrayObject与其他语言中的散列映射构造最接近,不同之处在于Arrays只有Number键,而Objects可以有任何类型作为键类型(特别是Strings)。在JavaScript中不建议在Array中使用String键(即使用关联Array)。

menus变量赋给Object文本。

请澄清您所说的意思:

菜单函数中的

如何根据调用的菜单获得名称或不同的名称?

如果menu Function返回任何类型的对象,键namediffname将映射到该值:即

代码语言:javascript
运行
复制
var nameValue = menus.name ;
var nameDiffValue = menus.diffname ;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6884867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档