javascript - Javascript 中嵌套 for 循环的替代方案

标签 javascript reactjs loops for-loop nested

我需要获取数组一中的一个元素,并将其与数组二中的每个其他元素进行比较,看看是否存在匹配。我需要对数组一中的每个元素执行此操作。

for ( let i = 0, j = userArray.length; i < j; i++) {
            for ( let c = 0, d = userArray.length; c < d; c++) {
              object = {
                id: userArray[i].account,
                name: userArray[i].name,
                title: "",
                rating: ""
              }

              if ( userArray[i].account === accountArray[c].id) {

                object.title = accountArray[c].title.title

              }

              if (object.title !== ""){
                objectArray.push(object)

              }

            }

          }

有没有更有效的方法来解决这个问题。

期望的结果是将 accountArray 的每个元素与 userArray 的每个元素进行比较以搜索匹配项

最佳答案

您可以使用数组 reduce() 方法来过滤您的 userArray 并将其映射到具有组合结果的新数组中。

这是一个示例(带有 stub 数据):

const userArray = [
  { account: 1, name: 'user 1' },
  { account: 2, name: 'user 2' },
  { account: 3, name: 'user 3' },
  { account: 4, name: 'user 4' },
  { account: 5, name: 'user 5' }
];

const accountArray = [
  { id: 1, name: 'account 1', title: 'account 1 title' },
  { id: 3, name: 'account 3', title: 'account 3 title' },
  { id: 5, name: 'account 5', title: 'account 5 title' }
];

const mergedList = userArray.reduce((acc, u) => {
  const account = accountArray.find(a => a.id === u.account);
  
  if (account) {
    acc.push({ 
      id: u.account,
      name: u.name,
      title: account.title,
      rating: ''
    })
  }
  
  return acc;
}, []);

console.log(mergedList);

您可以阅读有关 reduce() 的信息方法和find()方法。

关于javascript - Javascript 中嵌套 for 循环的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57928481/

相关文章:

javascript - 根据焦点输入显示元素

reactjs - 钩子(Hook)等同于 componentWilLReceiveProps 来更新状态

c# - NSubstitute 在循环中多次调用时返回意外值

c++ - 如何循环 n 次,在 xml 文件中每个循环一个级别

javascript - ES6 箭头函数意外标记

javascript - 如何更改过滤器中的 servletRequest 内容长度

javascript - Backbone.js 代码与常规 JS 代码

javascript - 将表单数据序列化为json react

javascript - 在react js中渲染动态html

c - 对 2D 阵列的一部分进行无限循环