2017-08-10 68 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);