-1

当我在 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):

在此处输入图像描述

4

6 回答 6

4

您看到第一项未定义的原因是因为它是。JS 数组从 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));

于 2013-08-01T11:47:44.610 回答
3

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

var tabInfos = [];
tabInfos[1] = {};
tabInfos[1]['label'] = 'one';
tabInfos[1]['id'] = '111';
tabInfos[2] = {};
tabInfos[2]['label'] = 'two';
tabInfos[2]['id'] = '222';
于 2013-08-01T11:44:15.753 回答
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
  );
});
于 2013-08-01T11:51:39.397 回答
0

实际上,通过您的屏幕截图,控制台确实显示了 tabInfos[1] 和 tabInfos[2] 第一个值的值,它显示在减号 [-] 之后的内联,并且因为它们中没有值,所以右侧没有任何显示。

于 2013-08-01T11:44:47.150 回答
0
var tabInfos = [];
    tabInfos[1] = {};
    tabInfos[1].label = 'one';
    tabInfos[1].id = '111';
    tabInfos[2] = {};
    tabInfos[2].label = 'two';
    tabInfos[2].id = '222';

但建议将 tabInfos 设为对象而不是数组(然后您可以制作关联数组也意味着您可以拥有命名属性)。

于 2013-08-01T11:56:48.920 回答
-1

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

于 2013-08-01T11:44:13.427 回答