为什么console.log不显示我的整个javascript多维数组?

时间:2013-08-01 11:41:02

标签: javascript arrays

当我在Javascript中创建这样的数组时:

    var tabInfos = [];
    tabInfos[1] = [];
    tabInfos[1]['label'] = 'one';
    tabInfos[1]['id'] = '111';
    tabInfos[2] = [];
    tabInfos[2]['label'] = 'two';
    tabInfos[2]['id'] = '222';

如何让console.log(tabInfos)显示第一个值(例如1,2):

enter image description here

6 个答案:

答案 0 :(得分:4)

您将第一个项目视为未定义的原因是因为它是。 JS Arrays从0开始,你从1开始。

看一下获得你想要的东西的推荐方法 - 一系列对象:

var tabInfos = [{
  "label": "zero",
  "id": "000"
}, {
  "label": "one",
  "id": "111"
}, {
  "label": "two",
  "id": "222"
}];

console.log(tabInfos);
// or if you must
console.log(JSON.stringify(tabInfos));

答案 1 :(得分:3)

您应该使用对象,而不是内部项目的数组。它们不像数组一样。

var tabInfos = [];
tabInfos[1] = {};
tabInfos[1]['label'] = 'one';
tabInfos[1]['id'] = '111';
tabInfos[2] = {};
tabInfos[2]['label'] = 'two';
tabInfos[2]['id'] = '222';

答案 2 :(得分:1)

您可以通过以下方式实现此目的:

var i = 0;

JSON.stringify(tabInfos, null, 2).split(/\n/).forEach(function(line) {
  window.console && console.log(
    (/\s{2}\S/.test(line)) ? i++ + line : line
  );
});

答案 3 :(得分:0)

实际上,通过屏幕截图,控制台 DOES 显示tabInfos [1]和tabInfos [2]的第一个值,它在减号后面显示 inline [ - ]并且因为没有值,右边没有任何值。

答案 4 :(得分:0)

var tabInfos = [];
    tabInfos[1] = {};
    tabInfos[1].label = 'one';
    tabInfos[1].id = '111';
    tabInfos[2] = {};
    tabInfos[2].label = 'two';
    tabInfos[2].id = '222';

但建议使用tabInfos而不是数组(然后你可以创建关联数组也意味着你可以拥有命名属性)。

答案 5 :(得分:-1)

您是否担心第一个未定义的值? JavaScript数组是0索引的。如果将第一个值设置为1,则第0个位置将自动变为未定义。