无法在Javascript中从地图迭代中返回值

时间:2017-12-10 00:47:44

标签: javascript ecmascript-6

尝试使用Javascript返回.map遇到的值时遇到问题。我的代码是:

function LineaDeSuccion() {
  const carga = vm.cargaTotal / vm.numeroEvaporadores;
  vm.succion.map(i => {
    if (i.temperatura == vm.tempSel) {
      const cargas = Object.keys(i).map(function(key) {
        return i[key];
      });
  // I need to return this value in my function
  return getKeyByValue(i, closest(cargas, carga));
  }
  // Obviously I can't do it because the value it's encapsulated into the map callback.
  // How can I solve it?
  return value;
  });
 }

2 个答案:

答案 0 :(得分:1)

一种方法是使用Array.prototype.find在数组中查找所需的值,然后在获得所需的转换后执行转换。

function LineaDeSuccion() {
    const carga = vm.cargaTotal / vm.numeroEvaporadores;
    const i = vm.succion.find(i => i.temperatura == vm.tempSel);

    if (i === undefined) {
        throw Error("can't find what I want in the array");
    }

    const cargas = Object.keys(i).map(function (key) {
        return i[key];
    });

    return getKeyByValue(i, closest(cargas, carga));
}

请注意,此方法不会遍历整个数组,但会在找到匹配项后立即跳出find循环。如果数组中有多个元素i满足条件i.temperatura == vm.tempSel,则返回第一个匹配,而不是最后一个。

答案 1 :(得分:0)

如果您想要返回map之外的值,则必须设置一个位于map之外的变量,然后在{{1}内设置该值}}:

map