簡體   English   中英

使用字符串替換將JS數組索引號轉換為值

[英]JS array index number into value with string replace

我有一個多維數組:

(3) [Array(1), Array(1), Array(1)]
0:["('idDocDetail','0','$createdBy')"]
1:["('idDocDetail','2','$createdBy'),('idDocDetail','4','$createdBy')"]
2:["('idDocDetail','0','$createdBy')"]

我需要用索引號替換字符串值idDocDetail ,就像這樣。

(3) [Array(1), Array(1), Array(1)]
0:["('0','0','$createdBy')"]
1:["('1','2','$createdBy'),('1','4','$createdBy')"]
2:["('2','0','$createdBy')"]

我正在嘗試使用替換,但我得到的替換不是函數錯誤。

array.forEach(function(item, index) {
  return item.toString().replace('idDocDetail', index);
    });

我究竟做錯了什么? 替換是正確的方法嗎?

在這里,這適用於您的代碼結構。 它使用map()生成一個新數組,只需用索引替換感興趣的字符串即可。

編輯:為了清晰+正則表達式添加了嵌套映射,以便在字符串中查找“idDocDetail”的所有實例,而不僅僅是第一個。 當給定原始string值時, replace方法只處理發生的字符串的第一個實例。

 const array = [["('idDocDetail','0','$createdBy')"], ["('idDocDetail','2','$createdBy'),('idDocDetail','4','$createdBy')"], ["('idDocDetail','0','$createdBy')"]] var find = 'idDocDetail'; var re = new RegExp(find, 'g'); let newArray = array.map((val, i) => val.map(string => { return string.replace(re, i) })) console.log(newArray) 

您可以循環遍歷數組並進行編輯。

 let array = [ ["('idDocDetail','0','$createdBy')"], ["('idDocDetail','2','$createdBy'),('idDocDetail','4','$createdBy')"], ["('idDocDetail','0','$createdBy')"], ]; array.forEach((e, i) => { array[i] = [e[0].replace(/idDocDetail/g, i)]; }); console.log(array); 

我建議你學習以不可變的方式進行更改。 這是Array.prototype.map可以很好地運行的地方

 const data = [ ["('idDocDetail','0','$createdBy')"], ["('idDocDetail','2','$createdBy'),('idDocDetail','4','$createdBy')"], ["('idDocDetail','0','$createdBy')"] ] const modified = data.map((item, index) => item.map(str => str.replace(/idDocDetail/g, index )) ) modified.forEach(x => console.log(JSON.stringify(x))) 

forEach忽略回調的返回。 您需要在當前索引處分配給原始數組。

 var array = [ ["('idDocDetail','0','$createdBy')"], ["('idDocDetail','2','$createdBy'),('idDocDetail','4','$createdBy')"], ["('idDocDetail','0','$createdBy')"] ]; array.forEach(function(item, index) { array[index] = item.map(s => s.replace('idDocDetail', index)); }); console.log(array); 

您無法通過調用要替換的項目上的方法來替換項目。 相反,你需要在陣列上調用它。 你可以這樣做:

for (var i=0; i<array.length; i++) {
    array[i][0] = i;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM