如何 return 具有一个由字符串参数定义的字段的数组
How to return array with one field defined by a string argument
我有一个 return 数组的函数,如何使用参数定义 return 数组中其中一列的名称?
假设我想要在 myFieldName
参数中传递名称的字段而不是字段 'qty'。
var results = _.map(
_.where(data, {
UNDERLYING: product
}),
function (r) {
if (r["QUANTITY"] != 0 && !isInArray(Date.parse(r["REPORT_DATE"]), errorDates)) {
return {
dt: Date.parse(r["REPORT_DATE"]),
qty: (r["QUANTITY"] * multiplier)
};
}
}
);
您不能使用变量名在对象字面量中定义 属性。因此,您可能必须创建一个对象并向其添加属性,就像这样
var obj = {};
obj["dt"] = Date.parse(r["REPORT_DATE"]);
obj[myFieldName] = r["QUANTITY"] * multiplier;
return obj;
如果您知道一些已经存在的属性,那么您可以在对象字面量本身中定义它们,就像这样
var obj = {
dt: Date.parse(r["REPORT_DATE"])
};
obj[myFieldName] = r["QUANTITY"] * multiplier;
return obj;
如果你在支持ECMAScript-6's Computed Property names的环境中,那么你可以简单地做
return {
dt: Date.parse(r["REPORT_DATE"]),
[myFieldName] : r["QUANTITY"] * multiplier
}
您可以在创建对象后分配新的或现有的属性:
let foo = {bar: 1};
foo.baz = 2;
要使用动态名称做到这一点,您需要使用方括号访问器,例如:
function assign(obj, field, value) {
obj[field] = value;
}
在你的情况下,你会做类似的事情:
function getQuantity(data, field) {
var results = _.map(
_.where(data, {
UNDERLYING: product
}),
function(r) {
if (r["QUANTITY"] != 0 && !isInArray(Date.parse(r["REPORT_DATE"]), errorDates)) {
var returnValue = {
dt: Date.parse(r["REPORT_DATE"])
};
returnValue[field] = r["QUANTITY"] * multiplier;
return returnValue;
}
}
);
return results;
}
我有一个 return 数组的函数,如何使用参数定义 return 数组中其中一列的名称?
假设我想要在 myFieldName
参数中传递名称的字段而不是字段 'qty'。
var results = _.map(
_.where(data, {
UNDERLYING: product
}),
function (r) {
if (r["QUANTITY"] != 0 && !isInArray(Date.parse(r["REPORT_DATE"]), errorDates)) {
return {
dt: Date.parse(r["REPORT_DATE"]),
qty: (r["QUANTITY"] * multiplier)
};
}
}
);
您不能使用变量名在对象字面量中定义 属性。因此,您可能必须创建一个对象并向其添加属性,就像这样
var obj = {};
obj["dt"] = Date.parse(r["REPORT_DATE"]);
obj[myFieldName] = r["QUANTITY"] * multiplier;
return obj;
如果您知道一些已经存在的属性,那么您可以在对象字面量本身中定义它们,就像这样
var obj = {
dt: Date.parse(r["REPORT_DATE"])
};
obj[myFieldName] = r["QUANTITY"] * multiplier;
return obj;
如果你在支持ECMAScript-6's Computed Property names的环境中,那么你可以简单地做
return {
dt: Date.parse(r["REPORT_DATE"]),
[myFieldName] : r["QUANTITY"] * multiplier
}
您可以在创建对象后分配新的或现有的属性:
let foo = {bar: 1};
foo.baz = 2;
要使用动态名称做到这一点,您需要使用方括号访问器,例如:
function assign(obj, field, value) {
obj[field] = value;
}
在你的情况下,你会做类似的事情:
function getQuantity(data, field) {
var results = _.map(
_.where(data, {
UNDERLYING: product
}),
function(r) {
if (r["QUANTITY"] != 0 && !isInArray(Date.parse(r["REPORT_DATE"]), errorDates)) {
var returnValue = {
dt: Date.parse(r["REPORT_DATE"])
};
returnValue[field] = r["QUANTITY"] * multiplier;
return returnValue;
}
}
);
return results;
}