2017-08-10 51 views
0

我得到了以下阵列的关键是:的JavaScript得到数组元素的

var myarr = [['a','b',1],['c','d',2],['e','f',3]] 

,我通过它以下列方式进行迭代:

$(myarr).each(function(k, v){ 
    if(this[2] == 2){ 
     //need to make 'c' and 'd' nulls 
     } 
    }); 

,所以我需要得到数组的关键元件并改变其1倍2的值,以便该阵列看起来像:

[['a','b',1],['0','0',2],['e','f',3]] 

我尝试以下:

this[0] = this[1] = null; 

但有意无意地产生了结果。任何想法如何解决它将是受欢迎的。我可以使用jQuery。谢谢

回答

1

this变量没有被绑定到你迭代的数组的值,需要使用第二个参数提供的值:回调

var myarr = [['a','b',1],['c','d',2],['e','f',3]] 
 

 
$(myarr).each(function(k, v){ 
 
    if(v[2] == 2){ 
 
     v[0] = v[1] = null; 
 
    } 
 
}); 
 

 
console.log(myarr)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

0

第一个参数是索引和第二个是当前元素,所以你的代码应该看起来像这样。

var myarr = [['a','b',1],['c','d',2],['e','f',3]] 
 

 
$.each(myarr, function(i, e) { 
 
    if(e[2] == 2) e[0] = null, e[1] = null 
 
}) 
 

 
console.log(myarr)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

0

您可以直接在JavaScript与mapforEach做到这一点:

var myarr = [['a','b',1],['c','d',2],['e','f',3]] 
 

 
myarr = myarr.map(function(ele, idx){ 
 
    if(ele[2] == 2){ 
 
     ele[0] = ele[1] = '0'; 
 
    } 
 
    return ele; 
 
}); 
 

 
console.log(myarr); 
 

 
var myarr1 = [['a','b',1],['c','d',2],['e','f',3]] 
 

 
myarr1.forEach(function(ele, idx){ 
 
    if(ele[2] == 2){ 
 
     myarr1[idx][0] = myarr1[idx][1] = '0'; 
 
    } 
 
}); 
 

 
console.log(myarr1);