[英]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.