在Javascript中更改数组中的文本
我有以下清单:在Javascript中更改数组中的文本,javascript,Javascript,我有以下清单: var submenu = localStorage.getItem('SubMenu') var submenuList = submenu.split(','); 0: "Ownership" 1: "Skills<br>Dev" 2: "Financing<br/>and ESD" 3: "Socio-Economic<br>Dev" 4:
var submenu = localStorage.getItem('SubMenu')
var submenuList = submenu.split(',');
0: "Ownership"
1: "Skills<br>Dev"
2: "Financing<br/>and ESD"
3: "Socio-Economic<br>Dev"
4: "Access to<br/>Financial Services"
5: "Board Participation"
6: "Employee Structure"
7: "Preferential Procurement"
8: "Enterprise Development"
9: "Supplier Development"
forEach
不允许您这样修改每个元素。简单地说,处理程序中的word
值只是一个值,而不是对数组中项目的引用。您可以使用for循环实际获取对数组中每个元素的引用(不推荐),也可以使用map
修改每个单词
submenuList=submenuList.map(
word=>word.replace(
"Dev",,
“发展”
)
)
const arr=[
“所有权”,
“技能
开发”,
“融资
和ESD”,
“社会经济发展”,
“访问
金融服务”,
“董事会参与”,
“雇员结构”,
“优惠采购”,
“企业发展”,
“供应商发展”
]
常数newArr=[];
用于(arr的let项目){
如果(项目结束(“开发”)){
console.log(“Dev-found”);
新建推送(项目替换(“开发”、“开发”);
}否则{
新到货推送(项目);
}
}
console.dir(newArr);
请参阅:
replace()
方法返回一个新字符串,其中包含替换所替换模式的部分或全部匹配项
replace()
方法返回新的替换字符串,而不是源字符串上的实际替换,因此您应该使用map
而不是forEach
,因为map
将获取所有输出并在新数组中返回它们
此外,由于您希望替换每次出现的'Dev'
或'Financing
和ESD'
,因此应使用替换
with标志。替换为字符串模式将仅替换第一次出现的内容
示例代码:
var submenu=localStorage.getItem('submenu'))
var submenuList=submenu.split(',');
var result=subnumlist.map(element=>element.replace(/Dev/g,“Development”).replace(/Financing和ESD/g,“授权融资”);
改进: 您应该在执行拆分操作之前替换字符串。因此,您不需要
forEach
或map
来提高性能
示例代码:
var submenu=localStorage.getItem('submenu'))
var replacedSubmenu=子菜单。replace(/Dev/g,“开发”)。replace(/Financing和ESD/g,“授权融资”);
var result=replacedSubmenu.split(',');
嘿,Mohammed,为了回答您的问题,我们需要您运行的代码片段,该片段最终引发异常。如果没有代码,就很难在代码中重现问题。@r感谢您的评论,我已经更新了问题,在replace中使用了一个对象,比如replace('dev',obj['dev']);
submenuList.forEach(word =>{allMenuItems = allMenuItems.replace('Dev','Development')})
const arr = [
"Ownership",
"Skills<br>Dev",
"Financing<br/>and ESD",
"Socio-Economic<br>Dev",
"Access to<br/>Financial Services",
"Board Participation",
"Employee Structure",
"Preferential Procurement",
"Enterprise Development",
"Supplier Development"
]
const newArr = [];
for(let item of arr) {
if(item.endsWith("Dev")) {
console.log("Dev found");
newArr.push(item.replace("Dev", "Development"));
} else {
newArr.push(item);
}
}
console.dir(newArr);