Javascript 操纵数组和对象
请容忍我,因为这是一个我正在努力解决的问题,所以我可能无法很好地解释它 我有一个值数组和两个字符串: e、 g 我还有一个对象数组(本例中只有一个,但可以是多个): 使用我拥有的值,我需要获得与正确的Javascript 操纵数组和对象,javascript,arrays,javascript-objects,Javascript,Arrays,Javascript Objects,请容忍我,因为这是一个我正在努力解决的问题,所以我可能无法很好地解释它 我有一个值数组和两个字符串: e、 g 我还有一个对象数组(本例中只有一个,但可以是多个): 使用我拥有的值,我需要获得与正确的DEPOT\u ID值相对应的DEPOT\u NAME键的值。我假设上面的数组可以用来查找正确的仓库ID,但是我该如何获取仓库名称的值呢 我希望我能解释清楚,好的,如果你需要更多的澄清,我会尽我最大的努力让它更清楚 在此方面的任何帮助都将不胜感激 感谢您的时间。此示例生成一个包含元素“Bristol
DEPOT\u ID
值相对应的DEPOT\u NAME
键的值。我假设上面的数组可以用来查找正确的仓库ID,但是我该如何获取仓库名称的值呢
我希望我能解释清楚,好的,如果你需要更多的澄清,我会尽我最大的努力让它更清楚
在此方面的任何帮助都将不胜感激
感谢您的时间。此示例生成一个包含元素“Bristol”和“Croydon”的数组(基于包含[5,6]的ID数组):
//您的示例对象
var yourObj=[
{
栏目:[
{name:“DEPOT_ID”},
{name:“DEPOT_name”},
{name:“REGION_ID”},
{name:“创建日期”},
{name:“修改日期”}
],
id:1,
行:[
{数据:{仓库ID:“0”,仓库名称:“伦敦”,区域ID:“0”,创建日期:“2016-05-03”,修改日期:“2016-05-03”},
{数据:{仓库ID:“1”,仓库名称:“阿比路”,区域ID:“1”,创建日期:“2016-05-03”,修改日期:“2016-05-03”},
{数据:{仓库ID:“3”,仓库名称:“Romford”,区域ID:“3”,创建日期:“2016-05-03”,修改日期:“2016-05-03”},
{数据:{仓库ID:“5”,仓库名称:“布里斯托尔”,区域ID:“5”,创建日期:“2016-05-03”,修改日期:“2016-05-03”},
{数据:{仓库ID:“6”,仓库名称:“克罗伊登”,区域ID:“6”,创建日期:“2016-05-03”,修改日期:“2016-05-03”}
],
标题:“仓库”
}
];
//基于ID获取仓库名称的示例代码
var-id=[5,6];
var depotNames=[];
对于(var i=0;i,您可以迭代对象并过滤需要的部分,然后仅获取目标值
函数getValues(键、值、目标){
返回数据[0]。行。筛选器(函数(a){
返回值。indexOf(a.data[key])!=-1;
}).map(函数(a){返回a.data[target];});
}
var数据=[{columns:[{name:“DEPOT_ID”},{name:“DEPOT_name”},{name:“REGION_ID”},{name:“CREATED_DATE”},{name:“MODIFIED_DATE”},{ID:1,行:[{data:{DEPOT_ID:“0”,DEPOT_name:“London”,REGION_ID:“0”,CREATED_DATE:“2016-05-03”,MODIFIED_DATE:“2016-05-03”},{data:“DEPOT(DEPOT(DEPOT(ID:“1”,DEPOT)DEPOT)Abbey Road:“Abbey”,创建日期:“2016-05-03”,修改日期:“2016-05-03”},数据:{仓库ID:“3”,仓库名称:“Romford”,区域ID:“3”,创建日期:“2016-05-03”,修改日期:“2016-05-03”},数据:{仓库ID:“5”,仓库名称:“Bristol”,区域ID:“5”,创建日期:“2016-05-03”,修改日期:“2016-05-03”},数据:{,仓库名称:“克罗伊登”,区域ID:“6”,创建日期:“2016-05-03”,修改日期:“2016-05-03”},标题:“仓库”});
console.log(getValues(“DEPOT_ID”、[“5”、“6”]、“DEPOT_名称”);
函数获取数据(cols、ids、mainArray){
var数据=[];
对于(变量i=0;i 对于(var c=0;cDo)您想使用Depot_Id获取Depot_名称,对吗?您能否通过提供场景所需的输入和最终输出来举例说明?因此,基本上我想通过使用数组[“5”,“6”]获得[“Bristol”,“Croydon”]的值找到正确的站点ID,然后获取站点名称的值。更有意义吗?很好,干净的解决方案非常感谢!
["5", "6"]
"DEPOT_NAME",
"DEPOT_ID"
[
{
columns: [
{name: "DEPOT_ID"},
{name: "DEPOT_NAME"},
{name; "REGION_ID"},
{name: "CREATED_DATE"},
{name: "MODIFIED_DATE"}
],
id: 1,
rows: [
{data: {DEPOT_ID: "0", DEPOT_NAME: "London", REGION_ID: "0", CREATED_DATE: "2016-05-03", MODIFIED_DATE: "2016-05-03"}},
{data: {DEPOT_ID: "1", DEPOT_NAME: "Abbey Road", REGION_ID: "1", CREATED_DATE: "2016-05-03", MODIFIED_DATE: "2016-05-03"}},
{data: {DEPOT_ID: "3", DEPOT_NAME: "Romford", REGION_ID: "3", CREATED_DATE: "2016-05-03", MODIFIED_DATE: "2016-05-03"}},
{data: {DEPOT_ID: "5", DEPOT_NAME: "Bristol", REGION_ID: "5", CREATED_DATE: "2016-05-03", MODIFIED_DATE: "2016-05-03"}},
{data: {DEPOT_ID: "6", DEPOT_NAME: "Croydon", REGION_ID: "6", CREATED_DATE: "2016-05-03", MODIFIED_DATE: "2016-05-03"}}
],
title: "Depots"
}
]
// your example object
var yourObj = [
{
columns: [
{name: "DEPOT_ID"},
{name: "DEPOT_NAME"},
{name: "REGION_ID"},
{name: "CREATED_DATE"},
{name: "MODIFIED_DATE"}
],
id: 1,
rows: [
{data: {DEPOT_ID: "0", DEPOT_NAME: "London", REGION_ID: "0", CREATED_DATE: "2016-05-03", MODIFIED_DATE: "2016-05-03"}},
{data: {DEPOT_ID: "1", DEPOT_NAME: "Abbey Road", REGION_ID: "1", CREATED_DATE: "2016-05-03", MODIFIED_DATE: "2016-05-03"}},
{data: {DEPOT_ID: "3", DEPOT_NAME: "Romford", REGION_ID: "3", CREATED_DATE: "2016-05-03", MODIFIED_DATE: "2016-05-03"}},
{data: {DEPOT_ID: "5", DEPOT_NAME: "Bristol", REGION_ID: "5", CREATED_DATE: "2016-05-03", MODIFIED_DATE: "2016-05-03"}},
{data: {DEPOT_ID: "6", DEPOT_NAME: "Croydon", REGION_ID: "6", CREATED_DATE: "2016-05-03", MODIFIED_DATE: "2016-05-03"}}
],
title: "Depots"
}
];
// example code to fetch the depot names based on ids
var ids = [5, 6];
var depotNames = [];
for(var i = 0; i<yourObj.length; i++){
var rows = yourObj[i].rows;
for(var j =0; j < rows.length; j++){
for(id in ids){
if(rows[j].data.DEPOT_ID == ids[id]){
depotNames.push(rows[j].data.DEPOT_NAME);
}
}
}
}
function fetchData(cols, ids, mainArray) {
var data = [];
for(var i=0;i < mainArray.length; i++) {
for(var c =0;c<mainArray[i].rows.length;c++) {
for(var id in ids) {
if(mainArray[i].rows[c].data.DEPOT_ID == ids[id]) {
var temp = {};
for(col in cols) {
temp[cols[col]] = mainArray[i].rows[c].data[cols[col]];
}
data.push(temp);
}
}
}
}
return data;
}