Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.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_Arrays_Parsing - Fatal编程技术网

Javascript 从字符串解析数组项的键路径

Javascript 从字符串解析数组项的键路径,javascript,arrays,parsing,Javascript,Arrays,Parsing,如何在JavaScript中将这样的字符串“0.children.13.children.0”解析为数组项的路径? 示例:“0.children.13.children.0”arr[0]。children[13]。children[0] 提前感谢!如果对象的键中有点,例如{'first.name':'John'},那么使用一个字符串并在上拆分它可能会中断,因此最好使用字符串/int来提供数组 下面是lodash get的一个实现,不同之处在于它只将路径作为字符串: var数据=[ { 儿童:[

如何在JavaScript中将这样的字符串
“0.children.13.children.0”
解析为数组项的路径? 示例:
“0.children.13.children.0”
arr[0]。children[13]。children[0]

提前感谢!

如果对象的键中有点,例如
{'first.name':'John'}
,那么使用一个字符串并在
上拆分它可能会中断,因此最好使用字符串/int来提供数组

下面是lodash get的一个实现,不同之处在于它只将路径作为字符串:

var数据=[
{
儿童:[
{
子项:[{name:'got'}],
},
],
},
无效的
];
const get=(对象,路径=“”,默认值)=>{
const recur=(对象、路径、默认值)=>{
if(对象类型!==“对象”){
返回默认值;
}
if(path.length==0){
返回对象;
}
if(对象中的对象!==null&&path[0]{
复发(
对象[路径[0]],
路径切片(1),
默认值,
);
}
返回默认值;
};
返回recur(对象,路径分割('.'),默认值);
};
log(get(未定义,,'Hello World');//默认为Hello World
log(get(data,'dos.not.exist','helloworld');//默认为helloworld
log(get(数据,'1','Hello World');//将为null(数据[0]为null)
log(get(data,'1.anything','helloworld');//默认为helloworld
console.log(//获取项数据[0]。子项[0]。子项[0]
获取(数据“0.children.0.children.0”、“Hello World”),

)
您使用哪种语言?我使用Javascript为什么不使用
split(“.”
?现在您有了所有的键,可以解析值
var value=path.split(.”)。reduce((obj,key)=>obj[key],arr);
谢谢!在这种情况下使用split函数非常有用,非常感谢!它帮助了我!