如何通过两个数组迭代并将键值返回到其他对象

发布于 2025-01-19 14:18:05 字数 317 浏览 1 评论 0原文

const phoneBook = {};
const names = ['Mira', 'Royce', 'Kathie'];
const numbers = ['3234958675', '9164059384', '4154958675']

function populate(names, numbers) {
  for(i = 0; i < populate.length; i++) {
    phoneBook[names[i]] = numbers[i];
}
  
}

如何同时使我的for循环通过两个阵列迭代并返回名称作为键和数字作为值?

const phoneBook = {};
const names = ['Mira', 'Royce', 'Kathie'];
const numbers = ['3234958675', '9164059384', '4154958675']

function populate(names, numbers) {
  for(i = 0; i < populate.length; i++) {
    phoneBook[names[i]] = numbers[i];
}
  
}

How can I get my for loop to iterate through both arrays simultaneously and return names as a key and numbers as the values?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

围归者 2025-01-26 14:18:05

你的想法大多是正确的。

两个建议:

  1. 的迭代次数
  2. 您想要使用 numbers.lengthnames.length 作为您可能不想改变全局对象

一个工作示例看起来像是这样像这样:

const names = ['Mira', 'Royce', 'Kathie'];
const numbers = ['3234958675', '9164059384', '4154958675'];

function populate(names, numbers) {
    const phoneBook = {};

    for(i = 0; i < names.length; i++) {
        phoneBook[names[i]] = numbers[i];
    }

    return phoneBook;
}

const phoneBook = populate(names, numbers);

You mostly have the right idea.

Two suggestions:

  1. you want to use numbers.length or names.length as the number of iterations
  2. you probably don't want to mutate a global object

A working example would look something like this:

const names = ['Mira', 'Royce', 'Kathie'];
const numbers = ['3234958675', '9164059384', '4154958675'];

function populate(names, numbers) {
    const phoneBook = {};

    for(i = 0; i < names.length; i++) {
        phoneBook[names[i]] = numbers[i];
    }

    return phoneBook;
}

const phoneBook = populate(names, numbers);
淡紫姑娘! 2025-01-26 14:18:05

更简洁地说,将数组压缩在一起,然后将其传递给 Object.fromEntries(0

function makePhoneBook(names, numbers) {
  const entries = names.map((name, i) => [name, numbers[i]]);
  return Object.fromEntries(entries);
}

const names = ['Mira', 'Royce', 'Kathie'];
const numbers = ['3234958675', '9164059384', '4154958675']
const phoneBook = makePhoneBook(names, numbers);
console.log(phoneBook);

More concisely, zip the arrays together, then pass that to Object.fromEntries(0

function makePhoneBook(names, numbers) {
  const entries = names.map((name, i) => [name, numbers[i]]);
  return Object.fromEntries(entries);
}

const names = ['Mira', 'Royce', 'Kathie'];
const numbers = ['3234958675', '9164059384', '4154958675']
const phoneBook = makePhoneBook(names, numbers);
console.log(phoneBook);

踏雪无痕 2025-01-26 14:18:05

只是说明, lodash 如果不这样头脑:

const names = ['Mira', 'Royce', 'Kathie'];
const numbers = ['3234958675', '9164059384', '4154958675'];

const phoneBook = _.zipObject(names, numbers);

console.log(phoneBook);
.as-console-wrapper { max-height: 100% !important; top: 0; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js" integrity="sha512-WFN04846sdKMIP5LKNphMaWzU7YpMyCU245etK3g/2ARYbPK9Ub18eG+ljU96qKRCWh+quCY7yefSmlkQw1ANQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

而且,当然是单线:

const names = ['Mira', 'Royce', 'Kathie'];
const numbers = ['3234958675', '9164059384', '4154958675'];

const phoneBook = names.reduce((acc, name, i) => (acc[name] = numbers[i], acc), {});

console.log(phoneBook);
.as-console-wrapper { max-height: 100% !important; top: 0; }

Just for the note, lodash if you don't mind:

const names = ['Mira', 'Royce', 'Kathie'];
const numbers = ['3234958675', '9164059384', '4154958675'];

const phoneBook = _.zipObject(names, numbers);

console.log(phoneBook);
.as-console-wrapper { max-height: 100% !important; top: 0; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js" integrity="sha512-WFN04846sdKMIP5LKNphMaWzU7YpMyCU245etK3g/2ARYbPK9Ub18eG+ljU96qKRCWh+quCY7yefSmlkQw1ANQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

And, of course, one-liner:

const names = ['Mira', 'Royce', 'Kathie'];
const numbers = ['3234958675', '9164059384', '4154958675'];

const phoneBook = names.reduce((acc, name, i) => (acc[name] = numbers[i], acc), {});

console.log(phoneBook);
.as-console-wrapper { max-height: 100% !important; top: 0; }

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文