重构Javascript ES6

重构Javascript ES6,javascript,ecmascript-6,Javascript,Ecmascript 6,我需要代码块下面的重构帮助。我被要求避免使用let和const,在这里如何使用常量,因为我需要返回所有可能具有匹配id的选项 const findRecordExists = (options, possibleMatchId) => { let item; options.forEach(option => { option.waivers.forEach(waiver => { if (waiver.waiverNameId === po

我需要代码块下面的重构帮助。我被要求避免使用let和const,在这里如何使用常量,因为我需要返回所有可能具有匹配id的选项

    const findRecordExists = (options, possibleMatchId) => {
  let item;
  options.forEach(option => {
    option.waivers.forEach(waiver => {
      if (waiver.waiverNameId === possibleMatchId) {
        item = option;
      }
    });
  });
  return item;
};
选择的例子是:

options: [{
  name:Abc
  waivers: [ {waiverNameId :1}, {waiverNameId:2} ]
}]

使用
过滤器
选项
数组上迭代,返回是否
放弃的部分
匹配:

const findRecordExists = (options, possibleMatchId) => {
  return options.filter(
    ({ waivers }) => waivers.some(
      ({ waiverNameId  }) => waiverNameId === possibleMatchId
    )
  );
};
或者,如果您不喜欢分解结构:

const findRecordExists = (options, possibleMatchId) => {
  return options.filter(
    option => option.waivers.some(
      wavier => wavier.waiverNameId => waiverNameId === possibleMatchId
    )
  );
};

由于结果是从
findRecordExists
函数立即返回的,因此甚至不需要中间
(或
)变量。

使用
过滤器
迭代
选项
数组,返回
放弃RNAMEID的部分
是否匹配:

const findRecordExists = (options, possibleMatchId) => {
  return options.filter(
    ({ waivers }) => waivers.some(
      ({ waiverNameId  }) => waiverNameId === possibleMatchId
    )
  );
};
或者,如果您不喜欢分解结构:

const findRecordExists = (options, possibleMatchId) => {
  return options.filter(
    option => option.waivers.some(
      wavier => wavier.waiverNameId => waiverNameId === possibleMatchId
    )
  );
};
由于结果是从
findRecordExists
函数立即返回的,因此甚至不需要中间的
item
(或
items
)变量。

没关系

使用
const
声明标识符时,仅当标识符的值是JavaScript原语(例如数字或布尔值)时,标识符的值才不可更改

如果标识符的值是对象或数组(数组是JavaScript中的对象类型),使用
const
声明它并不意味着不能更改该对象标识符的值。这只意味着无法重新分配标识符

要使用const重构代码,请使用下面的代码清单

const findRecordExists=(选项,可能为machid)=>{
可能匹配的常量选项=[];
options.forEach(option=>{
选项。弃权。forEach(弃权=>{
如果(弃权.弃权声明===可能的弃权声明){
具有可能匹配的选项。推送(选项);
}
});
});
返回可能匹配的选项;
};
如果您想跳过创建变量以存储与您的条件匹配的每个选项的中间步骤,您可以使用@CertainPerformance

规定的
筛选方法

使用
const
声明标识符时,仅当标识符的值是JavaScript原语(例如数字或布尔值)时,标识符的值才不可更改

如果标识符的值是对象或数组(数组是JavaScript中的对象类型),使用
const
声明它并不意味着不能更改该对象标识符的值。这只意味着无法重新分配标识符

要使用const重构代码,请使用下面的代码清单

const findRecordExists=(选项,可能为machid)=>{
可能匹配的常量选项=[];
options.forEach(option=>{
选项。弃权。forEach(弃权=>{
如果(弃权.弃权声明===可能的弃权声明){
具有可能匹配的选项。推送(选项);
}
});
});
返回可能匹配的选项;
};

如果您想跳过创建变量以存储与您的条件相匹配的每个选项的中间步骤,您可以使用@CertainPerformance

规定的
筛选方法。您可以使用
查找
方法重新考虑。这将简化并避免
变量

const选项=[
{
名称:“Abc”,
弃权:[{弃权声明:1},{弃权声明:2}]
}
];
const findRecordExists=(选项,可能的标记)=>
选项。查找(选项=>
option.弃权声明.find(弃权声明=>弃权声明.弃权声明===possibleMatchId)
);
log(findRecordExists(选项2));

log(findRecordExists(选项3))您可以使用
find
方法重新计算系数。这将简化并避免
变量

const选项=[
{
名称:“Abc”,
弃权:[{弃权声明:1},{弃权声明:2}]
}
];
const findRecordExists=(选项,可能的标记)=>
选项。查找(选项=>
option.弃权声明.find(弃权声明=>弃权声明.弃权声明===possibleMatchId)
);
log(findRecordExists(选项2));

log(findRecordExists(选项3))您希望得到什么结果?一个包含所有对象的数组,这些对象具有一个
豁免
,并且输入了
可能的MATCHID
?您希望得到什么结果?所有对象的数组,这些对象具有一个
豁免
,并且输入了
可能的MATCHID