Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中更改数组中的文本_Javascript - Fatal编程技术网

在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);