操作数组和对象
Manipulating arrays and objects
请耐心等待,因为这是一个我正在努力解决的问题,所以我可能无法很好地解释它!
我有一个值数组和两个字符串:
例如
["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"
}
]
使用我拥有的值,我需要获取与正确的 DEPOT_ID
值相对应的 DEPOT_NAME
键的值。上面的数组可用于查找我假设的正确的仓库 ID,但我将如何获取仓库名称的值?
我希望我已经解释清楚了,如果您需要更多说明,我会尽力使它更清楚。
如有任何帮助,我们将不胜感激。
感谢您的宝贵时间。
此示例生成一个包含元素 "Bristol" 和 "Croydon" 的数组(基于具有 [5, 6] 的 ID 数组):
// 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 getValues(key, values, target) {
return data[0].rows.filter(function (a) {
return values.indexOf(a.data[key]) !== -1;
}).map(function (a) { return a.data[target]; });
}
var data = [{ 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" }];
console.log(getValues("DEPOT_ID", ["5", "6"], "DEPOT_NAME"));
ES6
function getValues(key, values, target) {
return data[0].rows.
filter(a => values.indexOf(a.data[key]) !== -1).
map(a => a.data[target]);
}
var data = [{ 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" }];
console.log(getValues("DEPOT_ID", ["5", "6"], "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;
}
用法:fetchData(["DEPOT_NAME", "DEPOT_ID"], ["5", "6"], YourArray);
请耐心等待,因为这是一个我正在努力解决的问题,所以我可能无法很好地解释它!
我有一个值数组和两个字符串: 例如
["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"
}
]
使用我拥有的值,我需要获取与正确的 DEPOT_ID
值相对应的 DEPOT_NAME
键的值。上面的数组可用于查找我假设的正确的仓库 ID,但我将如何获取仓库名称的值?
我希望我已经解释清楚了,如果您需要更多说明,我会尽力使它更清楚。
如有任何帮助,我们将不胜感激。
感谢您的宝贵时间。
此示例生成一个包含元素 "Bristol" 和 "Croydon" 的数组(基于具有 [5, 6] 的 ID 数组):
// 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 getValues(key, values, target) {
return data[0].rows.filter(function (a) {
return values.indexOf(a.data[key]) !== -1;
}).map(function (a) { return a.data[target]; });
}
var data = [{ 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" }];
console.log(getValues("DEPOT_ID", ["5", "6"], "DEPOT_NAME"));
ES6
function getValues(key, values, target) {
return data[0].rows.
filter(a => values.indexOf(a.data[key]) !== -1).
map(a => a.data[target]);
}
var data = [{ 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" }];
console.log(getValues("DEPOT_ID", ["5", "6"], "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;
}
用法:fetchData(["DEPOT_NAME", "DEPOT_ID"], ["5", "6"], YourArray);