-4

我有一个var包含:

var flags = {USA, Brazil, Germany, Canada};

我可以得到每个键的数量的值

http://jsfiddle.net/YQSHr/

如何获取数字 {1, 2, 3} 而不将它们设置在var并从 1 开始

var flags = {USA, Canada, Germany};

编辑2:
我还有另一个var没有,
var flags = 'USA Brazil Germany Canada';

4

5 回答 5

3

采用

var flags = ['USA','Brazil','Germany','Canada'];

然后你可以迭代它

$.each(flags, function(key, value){
    var yourkey = key + 1; // Because you want 1 indexed
}
于 2013-03-10T20:56:27.220 回答
2

如果你想要一个字符串数组,你需要使用方括号

var flags = ["USA", "Canada", "Germany"];
/* or
var flags = 'USA Brazil Germany Canada'.split(' ');
*/

然而,为了从索引中获取数字,您需要添加 1,因为数组索引是从零开始的

$.each(flags, function(index, value){
    $('#flags').append('<span>' + value + (index+1) + '</span> ')
});

输出:

USA1
Canada2
Germany3
于 2013-03-10T20:56:42.190 回答
2
var flags = ['USA', 'Canada', 'Germany'];

$.each(flags, function(i, country){
    $('#flags').append('<span>' + country + (i += 1) + '</span> ')
});

http://jsfiddle.net/ethagnawl/YQSHr/3/

于 2013-03-10T20:57:13.187 回答
0
var flags = ['USA', 'Canada', 'Germany'];

$.each(flags, function(key, value){
   $('#flags').append('<span>' + (key+1) + ' '+ value + '</span> ')
});

用字符串设置数组

演示视图

于 2013-03-10T20:58:25.087 回答
0

您的代码无效。

var flags = {USA, Brazil, Germany, Canada};//error

请查看如何使用对象或数组并选择一个而不是混合。这将解决您遇到的问题。正如其他人在答案中指出的那样,您将能够使用字符串数组来匹配索引,或者使用对象中的索引来匹配字符串。

这基本上意味着将标志更改为

var flags = ["USA","Brazil","Germany","Canada"];

http://jsfiddle.net/YQSHr/6/


但是,根据您使用的标志数量,您可能希望使用数据结构。

var flagHolder = (function(){
 var flags = [];
 var flagIndex = 0;
 function addFlag(name){
  var flag = {};
  flag.name = name;
  flag.index = flagIndex++;
  flags.push(flag);
  return flag.index;
 }
 function getFlag(index){
  return flags[index];
 }
 function getAllFlags(){
  return flags;
 }
 return { 
  getAllFlags: getAllFlags,
  getFlag: getFlag,
  addFlag: addFlag
 };
})();

可以这样使用:

var USA = flagHolder.addFlag("USA");
var Canada = flagHolder.addFlag("Canada");
var Germany = flagHolder.addFlag("Germany");
var Brazil = flagHolder.addFlag("Brazil");
//Get Single
$("#flag").html(flagHolder.getFlag(USA).name);
//Get All
$.each(flagHolder.getAllFlags(), function(key,value){
 $('#flags').append('<span>' + (key+1) + '</span> ');
});

这是一个演示:http: //jsfiddle.net/YQSHr/7/

于 2013-03-10T21:13:28.437 回答