问题描述
如何返回数组的值?方法 .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
}
谢谢!
解决方法
这是不可能的。 func1()
总是返回一个包含一个元素的数组,它永远不会返回 [1,2]
,无论 func2
做什么。您必须修改其代码。
作为 Bergi stated,func1()
将始终返回一个数组,无论 func2()
返回什么。但是根据 func1()
的返回值,有几种方法可以实现这一点。
您可以简单地使用数组 test[0]
中的第一个元素,也可以使用 Array.flat()
method 或 spread operator。请参阅下面的片段。
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);