首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JavaScript中的多维关联数组

JavaScript中的多维关联数组
EN

Stack Overflow用户
提问于 2010-12-02 05:00:27
回答 10查看 240.8K关注 0票数 87

查询结果如下:(key1和key2可以是任意文本)

代码语言:javascript
复制
id   key1     key2     value

1    fred     apple    2
2    mary     orange   10
3    fred     banana   7
4    fred     orange   4
5    sarah    melon    5
...

我希望将数据存储在一个网格中(可能是一个数组),循环所有记录,如下所示:

代码语言:javascript
复制
         apple    orange   banana  melon
fred        2        4         7     -
mary        -        10        -     -
sarah       -        -         -     5

在PHP中,使用关联数组,这将非常简单:

代码语言:javascript
复制
$result['fred']['apple'] = 2;

但是在JavaScript中,像这样的关联数组是行不通的。在阅读了大量的教程后,我所能得到的只有以下内容:

代码语言:javascript
复制
arr=[];
arr[1]['apple'] = 2;

但是arr['fred']['apple'] = 2;不能工作。我尝试了对象数组,但对象属性不能是自由文本。我读的教程越多,我就越困惑……

欢迎任何想法:)

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2010-12-02 05:13:29

只需使用常规的JavaScript对象,它将以与关联数组相同的方式“读取”。你也必须记得先初始化它们。

代码语言:javascript
复制
var obj = {};

obj['fred'] = {};
if('fred' in obj ){ } // can check for the presence of 'fred'
if(obj.fred) { } // also checks for presence of 'fred'
if(obj['fred']) { } // also checks for presence of 'fred'

// The following statements would all work
obj['fred']['apples'] = 1;
obj.fred.apples = 1;
obj['fred'].apples = 1;

// or build or initialize the structure outright
var obj = { fred: { apples: 1, oranges: 2 }, alice: { lemons: 1 } };

如果您正在查看值,您可能会得到如下所示的内容:

代码语言:javascript
复制
var people = ['fred', 'alice'];
var fruit = ['apples', 'lemons'];

var grid = {};
for(var i = 0; i < people.length; i++){
    var name = people[i];
    if(name in grid == false){
        grid[name] = {}; // must initialize the sub-object, otherwise will get 'undefined' errors
    }

    for(var j = 0; j < fruit.length; j++){
        var fruitName = fruit[j];
        grid[name][fruitName] = 0;
    }
}
票数 162
EN

Stack Overflow用户

发布于 2010-12-02 05:08:14

如果它不一定是一个数组,你可以创建一个“多维”JS对象...

代码语言:javascript
复制
<script type="text/javascript">
var myObj = { 
    fred: { apples: 2, oranges: 4, bananas: 7, melons: 0 }, 
    mary: { apples: 0, oranges: 10, bananas: 0, melons: 0 }, 
    sarah: { apples: 0, oranges: 0, bananas: 0, melons: 5 } 
}

document.write(myObj['fred']['apples']);
</script>
票数 28
EN

Stack Overflow用户

发布于 2010-12-02 05:06:57

Javascript很灵活:

代码语言:javascript
复制
var arr = {
  "fred": {"apple": 2, "orange": 4},
  "mary": {}
  //etc, etc
};

alert(arr.fred.orange);
alert(arr["fred"]["orange"]);
for (key in arr.fred)
    alert(key + ": " + arr.fred[key]);
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4329092

复制
相关文章

相似问题

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