想写一个方法 从原始筛选出想要的
var testArr=[{
"k1":{
"k3ad":"df",
"k0":{
"user":"xia0ming",
"age":"18"
},
},
"ke.name":"danshi"
},{
"k1":{
"k3ad":"dfsdf",
"k0":{
"user":"xia0ming",
"age":"28"
},
},
"ke.name":"dadfnshi"
}];
var getTbodyData= function (ajaxdata, filterArr) {
var arr = [];
ajaxdata.forEach(function (data, i) {
arr.push({});
filterArr.forEach(function (key) {
arr[i][key]=data[key]
});
});
return arr;
};
getTbodyData(testArr,["k1.k3ad","ke.name"])
比如我想筛选原json,结果为
[{
"k1.k3ad":"df",
"ke.name":"danshi"
},{
"k1.k3ad":"dfsdf",
"ke.name":"dadfnshi"
}]
但是我写的方法找到的k1.k3ad 为undefined如下

,求大神指导
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
你能取到
k3.ad完全是因为这个属性名就叫k3.ad啊,data[k1.k3ad]并不等于data.k1.k3ad,所以你这么写是无效的。准确的说,你这个例子里,点运算符
.和属性名内部的点并不能区分,k1.k3ad中是作为点运算符取属性,k3.ad中则是属性名自带的点,你告诉我这要函数怎么区分?要实现这个功能的话首先还是修改你的json格式吧,或者把
k1.k3ad这种需求情况下的参数改为[k1][k3ad]之类的格式。根据你的方法进行的修改