Javascript 如何返回一个由字符串参数定义的字段的数组
我有一个返回数组的函数,如何用一个参数定义返回数组中一列的名称 假设不使用字段“qty”,而是希望在myFieldName参数中传递其名称的字段Javascript 如何返回一个由字符串参数定义的字段的数组,javascript,arrays,underscore.js,Javascript,Arrays,Underscore.js,我有一个返回数组的函数,如何用一个参数定义返回数组中一列的名称 假设不使用字段“qty”,而是希望在myFieldName参数中传递其名称的字段 var results = _.map( _.where(data, { UNDERLYING: product }), function (r) { if (r["QUANTITY"] != 0 && !isInArray(Date.parse(r["REPORT_DATE"])
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;
如果您知道一些已经存在的属性,那么您可以在对象文本本身中定义它们,如下所示
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;
如果您所处的环境支持
return {
dt: Date.parse(r["REPORT_DATE"]),
[myFieldName] : 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;
如果您知道一些已经存在的属性,那么您可以在对象文本本身中定义它们,如下所示
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;
如果您所处的环境支持
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;
}
创建对象后,可以指定新的或现有的特性,如下所示:
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;
}
just do r[myFieldName]?密切相关:正如你所看到的,最接近的是一个副本,我已经在使用该符号,问题是我不能引用r,因为新数组不是r,我不能写r[qty]而不是qty:just do r[myFieldName]?密切相关:最接近的副本,正如你所看到的,我已经在使用该符号,问题是我不能引用r,因为新数组不是r,我不能写r[qty]而不是qty:谢谢,这缺少一位,在returnValue[Field]之后我们需要添加returnValue;谢谢,这缺少一点,在returnValue[字段]之后我们需要添加returnValue;