gpt4 book ai didi

Javascript 表达式 `["Java", "Python","Javascript"][Symbol.iterator]().next().value` 计算为给定数组的第一个值

转载 作者:行者123 更新时间:2023-11-30 08:18:22 25 4
gpt4 key购买 nike

我在面试中被要求在不使用索引和任何辅助函数的情况下获取数组的第一个值。然后面试官给了我下面的解决方案,它有效但无法确切地弄清楚如何?

const firstValue = ["Java", "Python","Javascript"][Symbol.iterator]().next().value;

console.log('First Value: ', firstValue);

如果任何人都可以提供更多见解,将会有所帮助和赞赏。谢谢!

最佳答案

这是破败:

  • 数组是可迭代的,这意味着它们有一个方法可以通过以符号 Symbol.iterator 命名的属性使用,该方法的行为与规范规定的一样。
  • 当您调用该方法时,它会返回一个迭代器。
  • 迭代器有一个 next 方法,您可以使用该方法从迭代器获取“下一个”结果:第一次调用返回第一个结果,第二次调用返回第二个结果,依此类推。
  • 结果是具有 bool 值 done 属性和具有该迭代实际值的 value 属性的对象。 (从技术上讲,两者都是可选的:done 默认为 falsevalue 默认为 undefined。但是迭代器由 native JavaScript 对象提供的两个属性都明确。)

下面是该语句执行上述操作的方式:

//                                +----------------------------------------------- create the array
// | +----------------------- get its `Symbol.iterator` method
// | | +------------- call it
// | | | +--------- call the `next` method of the iterator to get the first result object
// | | | | +-- get its `value` property
// | | | | |
// | | | | |
// | | | | |
// | | | | |
// | | | | |
// | | | | |
// \vvvvvvvvvvvvvvvvvvvvvvvvvvvvv/\vvvvvvvvvvvvvvv/\/ \vvvv/ \vvv/
const firstValue = ["Java", "Python","Javascript"][Symbol.iterator]().next().value;

或者更清楚:

// Create the array
const array = ["Java", "Python","Javascript"];
// Get its `Symbol.iterator` method
const iteratorMethod = array[Symbol.iterator];
// Call it
const iterator = iteratorMethod.call(array);
// Call the `next` method of the iterator to get the first result object
const resultObject = iterator.next();
// Get its `value` property
const firstValue = resultObject.value;

console.log(firstValue); // "Java"

关于Javascript 表达式 `["Java", "Python","Javascript"][Symbol.iterator]().next().value` 计算为给定数组的第一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57968115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com