首页 > 解决方案 > JavaScript:如何为对象的键和值使用单独的数组索引变量?

问题描述

任务 描述 构造一个接受两个数组和一个回调的函数 objOfMatches。objOfMatches 将构建一个对象并返回它。为了构建对象,objOfMatches 将使用回调测试第一个数组的每个元素,以查看输出是否与第二个数组的相应元素(按索引)匹配。如果匹配,则第一个数组中的元素成为对象中的键,第二个数组中的元素成为对应的值。

到目前为止我的代码

function objOfMatches(inray1, inray2, callback)
{
  let outray1 = inray1, outray2 = inray2;
  let obj = new Object();
  let longerray = [];
  if(inray1.length > inray2.length)
  {
    longerray = inray1;
  }
  else
  {
    longerray = inray2;
  }
  
  for(let a = 0; a < longerray.length; a++)
  {
    if(callback(outray1[a]) === callback(outray2[a]))
    {
      obj = { [outray1[a]]: [outray2[a]] }; //Only has last matching array element
    }
  }
  
  return obj;
}

// Uncomment these to check your work!
 var arr1 = ['hi', 'howdy', 'bye', 'later', 'hello'];
 var arr2 = ['HI', 'Howdy', 'BYE', 'later', 'HELLO'];
 function uppercaser(str) { return str.toUpperCase(); }
 console.log(objOfMatches(arr1, arr2, uppercaser)); // should log: { hi: 'HI', bye: 'BYE', hello: 'HELLO' }

标签: javascriptobject

解决方案


你并没有真正描述你的问题是什么,但我猜你没有得到你期望的结果。而不是在循环中创建一个新对象,您应该分配给您之前创建的对象:

obj[outray1[a]] = outray2[a];

推荐阅读