Javascript 如何返回一个由字符串参数定义的字段的数组

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"])

我有一个返回数组的函数,如何用一个参数定义返回数组中一列的名称

假设不使用字段“qty”,而是希望在myFieldName参数中传递其名称的字段

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;