javascript中不带双引号的字符串数组
我想在javascript中将字符串数组转换为另一个不带引号的数组javascript中不带双引号的字符串数组,javascript,jquery,leaflet,Javascript,Jquery,Leaflet,我想在javascript中将字符串数组转换为另一个不带引号的数组 [ "L.latLng(30.709455,76.688576)", "L.latLng(30.709461,76.68856)", "L.latLng(30.709461,76.68856)", "L.latLng(30.70947,76.6886)", "L.latLng(30.709461,76.68856)" ]; 预期结果: [ L.latLng(30.709455, 76.688576),
[
"L.latLng(30.709455,76.688576)",
"L.latLng(30.709461,76.68856)",
"L.latLng(30.709461,76.68856)",
"L.latLng(30.70947,76.6886)",
"L.latLng(30.709461,76.68856)"
];
预期结果:
[
L.latLng(30.709455, 76.688576),
L.latLng(30.709461, 76.68856),
L.latLng(30.709461, 76.68856),
L.latLng(30.70947, 76.6886),
L.latLng(30.709461, 76.68856)
];
输出:-
[L.latLng(30.709455,76.688576),L.latLng(30.709461,76.68856),L.latLng(30.709461,76.68856),L.latLng(30.70947,76.6886),L.latLng(30.709461,76.68856)]
解决这个问题有多种方法 危险不安全的
eval
方式:
这种方法直接调用eval
,执行传入的任何JavaScript代码,因此存在许多与此相关的安全问题
const newArray = stringArray.map(eval);
eval
带有白名单
使调用eval
更安全的一种方法是使用允许模式的白名单,这确保代码不会访问其预期范围之外的任何变量
const L={};
L.latLng=(lat,lng)=>({lat,lng})
常量字符串数组=[
“L.latLng(30.709455,76.688576)”,
“L.latLng(30.709461,76.68856)”,
“L.latLng(30.709461,76.68856)”,
“L.latLng(30.70947,76.6886)”,
“L.latLng(30.709461,76.68856)”
];
const newArray=stringArray.map((行)=>{
如果(/L\.latLng\([0-9]+(?:\[0-9]+),-?[0-9]+(?:\[0-9]+)/.test(line)){
返回评估(行);
}
抛出新错误('指定的无效字符串:'+行);
});
log(newArray)
它不能是,除非L.latLng
是一个函数,并且返回一个数据类型。可能理解什么是will help.xy问题,为什么数组是这样的?您可以使用eval
执行JavaScript表达式,但是,如果输入不能被保存,则会带来很多安全风险trusted@madalinivascu这就是我得到的java Arraylist。我想在传单模块中使用该列表。输出将是字符串
而不是数组
。
const newArray = stringArray.map(eval);