【问题标题】:How do I get the results from a forEach method on an array?如何从数组上的 forEach 方法获取结果?
【发布时间】:2020-06-08 00:32:30
【问题描述】:

我有一个显示用户提交数据表的项目,即“条目”。

我的项目设置为将条目对象从条目数组中提取出来,并使用适当的数据构建表。

表格中的一个单元格是一个复选框。每个条目的复选框都有一个对应于条目 ID 号的值。

我正在尝试向此表添加编辑、删除功能。

我有一个检查所有复选框并从所选条目返回值数组的函数。这个数组是checkedEntries。

我正在尝试使用checkedEntries,并且对于该数组的每个索引,我希望它在主条目数组中搜索具有匹配ID 的对象。然后我希望它把这些对象拉出来,并将它们存储在一个新的数组中,pullEntries。

我相信我在正确的轨道上,但我不确定如何访问 forEach 方法的结果。我不想使用 JQuery。

这是我的代码:Javascript

function pullEntries(arr) {
  arr.forEach(entry => entries.find(item => {
    if (entry === item.id)
      return true;
    // push entry object into pulledEntries
    pulledEntries.push(idk?); // what would I use to reference it here? 
  }))
}

【问题讨论】:

标签: javascript arrays


【解决方案1】:

其他答案之一的简化​​:

function pullEntries(arr) {
  return arr.map(entry => entries.find(item => entry === item.id));
}

【讨论】:

  • 请编辑您的答案以解释它如何回答问题。
【解决方案2】:

正如@ChechoCZ 所说,使用.map 而不是.forEach 将以数组的形式返回结果。但是,我相信这是 ES6 语法。

ES6 方式:

function pullEntries(arr) {
  return arr.map(entry => entries.find(item => {
    if (entry === item.id)
      return true;
    return false;
  }))
}
// returns a result looking like [true, true, false, true, false, false]

ES5 方式:

function pullEntries(arr) {
  let newArr = [];
  arr.forEach(function(entry) {
    return entries.find(function(item) {
      if (entry === item.id)
        newArr.push(true);
      else
        newArr.push(false);
    });
  });
  return newArr;
}
// returns a result looking like [true, true, false, true, false, false]

【讨论】:

  • ES5 不支持箭头函数(在 forEach 中)。
  • 感谢您的建议!我完全错过了!
  • (在地图的这种用法中,箭头函数不是必需的,并且没有添加任何值[除了稍微短一点的语法]。)
  • 不需要 Wdym 箭头函数? map 不期望回调作为参数吗?
  • 当然可以。 “正常”匿名函数可以正常工作。除了语法之外,箭头和“普通”匿名函数之间的唯一区别在于this的绑定(或缺少)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-11
  • 2014-05-06
  • 2018-01-30
  • 2021-06-04
  • 2014-01-19
  • 2011-07-09
相关资源
最近更新 更多