如何从JSON动态获取选定的列数据?

时间:2018-10-01 11:11:57

标签: javascript arrays json

我需要从json获取正确的列表框列数据

enter image description here

我的json如下:

[
  {
    "CustName": "Matt Harrison",
    "name": "Steve Rucci",
    "functionRoom": "Living Room",
    "bookingId": "659",
    "bookingName": "Matt Booking for Lost Business Report Sept 11",
    "postAs": ""
  }
]

我应用了自定义功能

copyObjectProps(source, keys) {
   let newObject = {}
   keys.forEach(function(key) {
     newObject[key] = source[key]
   })
   return newObject
}

在按钮上单击“首先我准备列列表”

$("#button").click(function(){
var s='';
$("Listbox > option").each(function() {
s+="'"+this.text+"',";
});
s=s.replace(/,+$/,'');
objBookingReports.RS_FN_FunctionList=s;
}) 

然后此列表转到copyObjectProps()函数并创建过滤的json对象

var filteredparam1 = new Array();
var x =objBookingReports.RS_FN_FunctionList;

// x value is "'bookingId','bookingName'"

x = x.replace(/^"\?/, '');
x=x.replace(/"+$/,'');
var y=[x];
$.each(jsonData, function(key, value){
filteredparam1.push(objBookingReports.copyObjectProps(value,y))
});
console.log(filteredparam1)
}

问题出在格式化中。当我将列列表放在y = [x]时; .it不会使用选定的列重新调整json数据。但是,如果我尝试放置

这样的核心价值
var y=['bookingId','bookingName'];

然后它显示了我的结果。请提出如何正确设置列列表格式的提示?

1 个答案:

答案 0 :(得分:2)

尝试这样:

var filteredparam1 = new Array();
var x =objBookingReports.RS_FN_FunctionList;

// x value is "'bookingId','bookingName'"


// x = x.replace(/^"\?/, '');
// x=x.replace(/"+$/,'');
var y = x.replace(/["']/g, "").split(',')  // var y=[x];
$.each(jsonData, function(key, value){
    filteredparam1.push(objBookingReports.copyObjectProps(value,y))
});
console.log(filteredparam1)
}

似乎您的y变量变成了只有一个元素的数组:"'bookingId','bookingName'";只需尝试用变量x中的空格替换单引号,然后用逗号分隔即可。

Here一种替换单引号和双引号的解决方案。