javascript - 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' }
解决方案
你并没有真正描述你的问题是什么,但我猜你没有得到你期望的结果。而不是在循环中创建一个新对象,您应该分配给您之前创建的对象:
obj[outray1[a]] = outray2[a];
推荐阅读
- qt - 使用 QML 操作 QCamera
- java - java.lang.ClassNotFoundException:从 12.2.1.0.0 升级时 Weblogic 12.2.1.4.0 中的 org.slf4j.Logger
- azure-functions - 谁在满足 Azure 函数 /admin/functions 错误的请求
- elasticsearch - 俄罗斯词干分析器的错误结果
- android - 将 AOSP 项目导出到 Android Studio
- git - 使用 shell 脚本批量克隆 git 存储库时添加目标文件夹
- php - 如何使用 php 播放在数据库中存储为 BLOB 格式的 AVI、FLV 和 Mp4 视频?
- json - Azure 数据工厂 - 内容类型为 JSON,但响应为 XML
- haskell - 如何构建 Haskell 应用程序?
- php - Symfony 令牌在订阅者中为空