可以使用递归函数来遍历包含嵌套对象的数组,并按照值的位置顺序和长度创建一个新的数组。以下是一个示例代码:
function flattenArray(arr) {
let result = [];
function flatten(item) {
if (Array.isArray(item)) {
for (let i = 0; i < item.length; i++) {
flatten(item[i]);
}
} else {
result.push(item);
}
}
flatten(arr);
return result;
}
function createArrayFromValues(arr) {
let result = [];
for (let i = 0; i < arr.length; i++) {
let value = arr[i];
let length = value.toString().length;
result.push({ value, length });
}
return result;
}
let nestedArray = [1, [2, [3, 4]], 5];
let flattenedArray = flattenArray(nestedArray);
let resultArray = createArrayFromValues(flattenedArray);
console.log(resultArray);
在上面的代码中,我们首先定义了一个flattenArray
函数,它使用递归来遍历嵌套数组,并将所有的值放入一个新的数组result
中。
然后,我们定义了一个createArrayFromValues
函数,它遍历flattenArray
返回的数组,并为每个值创建一个对象,包含值本身和它的长度。
最后,我们使用示例嵌套数组[1, [2, [3, 4]], 5]
,先通过flattenArray
函数将其展开成[1, 2, 3, 4, 5]
,然后通过createArrayFromValues
函数创建一个包含值和长度的新数组,并将其打印出来。
输出结果为:[ { value: 1, length: 1 }, { value: 2, length: 1 }, { value: 3, length: 1 }, { value: 4, length: 1 }, { value: 5, length: 1 } ]