Javascript递增列表列表

时间:2012-12-09 14:39:10

标签: javascript jquery arrays

如果我有这样的清单:

var a=  [['1'[0]],['2'[0]],['3'[0]],['4'[0]]];

如果条件另一个变量应该等于' 1',' 2',' 3',' 4'然后增加其列表的值,例如:

for(var i=0; i<a; i++{
 if(a[i] == z) {
   a[i] += z;
    }
}

我知道上面的代码不起作用,但我怎么能得到每个内部的代码呢?要素是什么?

我是一个javascript新手,所以请原谅代码中的任何错误。

由于

2 个答案:

答案 0 :(得分:2)

这些最里面的数组位于第一组内部数组的索引[1],假设您的数组的实际格式为:

// Note the commas between the inner elements which you don't have above.
var a = [['1',[0]],['2',[0]],['3',[0]],['4',[0]]];

所以你几乎就在那里,你需要访问a[i][1][0]并将其++增加而不是+= z

示例:

console.log(a[1][1][0]);
// 0  (at element '2')

// z is the string value you are searching for...
for(var i=0; i < a.length; i++) {
  // Match the z search at a[i][0]
  // because a[i] is the current outer array and [0] is its first element
  if(a[i][0] == z) {
    // Increment the inner array value which is index [i][1][0]
    // Because the 1-element inner array is at [i][1] and its first element is [0]
    a[i][1][0]++;
  }
}

所以z = '2'

// Flattened for readability:
a.toString();
// "1,0,2,1,3,0,4,0"
//-------^^^

然后z = '4'

// This time the '4' element gets incremented
a.toString();
// "1,0,2,1,3,0,4,1"
//-------^^^-----^^^

Here's a demo on jsfiddle...

更新:这是更新值所在的位置:

Console example

Array[1] 0: 1z == '4'的增量值。

答案 1 :(得分:1)

我不确定你想要完成什么,但我认为它是这样的:

var lists = {
    '1': [0],
    '2': [0]
};

function incrementList(listKey, value) {
    if (lists[listKey]) {
        lists[listKey] = lists[listKey].map(function(num) {
            return num + value;
        });
    }        
}

incrementList('1', 2);
console.log(lists['1'][0]); // 2

incrementList('1', 4);
console.log(lists['1'][0]); // 6