【发布时间】:2021-11-01 07:28:03
【问题描述】:
我试图通过将它们声明为对象来返回两个数组(多个值)
<script>
function funWithArrays(arr) {
const arr1 = []; //short string
const arr2 = []; //long string
for (var i = 0; i < arr.length; i++) {
if (arr[i].length <= 3) {
arr1.push(arr[i]);
} else {
arr2.push(arr[i]);
}
}
return {
arr1,
arr2
};
}
document.getElementById("results").innerHTML = funWithArrays(["we", "cream", "to", "this", "two"]);
</script>
这是我的尝试,但是,当我运行它时,输出如下:
[object Object]
我想知道为什么没有返回实际的数组?
【问题讨论】:
-
您返回的不是数组,而是具有属性
arr1和arr2的非数组对象(这些道具指的是数组)。然后,您通过将该对象分配给innerHTML将其隐式转换为字符串,这会触发对象的默认toString(因为您的对象没有定义),对于普通对象,它会返回字符串"[object Object]"。如果你想返回一个数组数组,它将是return [arr1, arr2];(方括号),它将转换为包含数组元素的字符串版本的字符串(但对于嵌套数组来说有点令人困惑)。 -
“令人困惑”,我的意思是:数组
[ [1, 2, 3], [4, 5, 6] ]转换为字符串"1,2,3,4,5,6"(这正是[1, 2, 3, 4, 5, 6]将转换为的字符串)。
标签: javascript arrays