返回数组值,而不是Javascript中的数组迭代器



如何返回数组的值?方法.values((和.entries((似乎返回了一个数组迭代器。这不是我想要的。对于这种边缘情况,我也不允许修改func1((函数。

const test = func1();
console.log(test); // actual: [[1,2]] what I want: [1,2]
function func1() { // not allowed to modify func1
return [func2()];
}
function func2() {
const set = new Set();
set.add(1);
set.add(2);
return Array.from(set); 
// return Array.from(set).values() returns Array Iterator
}

谢谢!

正如Bergi所说,无论func2()返回什么,func1()都将始终返回一个数组。但是,基于func1()的返回值,有几种方法可以实现这一点。

您可以简单地使用数组test[0]中的第一个元素,也可以使用Array.flat()方法或排列运算符。请参阅下面的片段。

const test = func1();
function func1() { // not allowed to modify func1
return [func2()];
}
function func2() {
const set = new Set();
set.add(1);
set.add(2);
return Array.from(set); 
// return Array.from(set).values() returns Array Iterator
}
// First element in array
console.log(test[0]);
// Array.flat()
console.log(test.flat());
// Spread operator
console.log(...test);

这是不可能的。func1()总是返回一个只有一个元素的数组,它永远不能返回[1,2],无论func2做什么。您必须修改其代码。

最新更新