我需要包装数组的每个元素,甚至是子元素。
输入:
var array = [
{"name":"name1"},
{"name":"name2"},
{"name":"name3", children : [{"id":"1"}]}];
所需的输出:
var newArray = [
{elem : {"name":"name1"}},
{elem : {"name":"name2"}},
{elem : {"name":"name3", children : [{elem : {"id":"1"}}]}}];
我已经完成以下工作:
function insertKey(array){
for (var i = 0; i<array.length; i++){
tempItem = {elem : array[i]}
newarray.push(tempItem);
}
}
//输出:
newarray =
[{elem:{"name":"name1"}},
{elem:{"name":"name2"}},
{elem:{"name":"name3"}}]
但是问题出在孩子身上。我尝试了以下内容,但无法正常工作。
function insertKey(array){
for (var i = 0; i<array.length; i++){
tempItem = {elem : array[i]}
newarray.push(tempItem);
insertKey(array[i]);
}
}
提前感谢。
您可以尝试遍历数组的每个对象,并将它们添加到新数组中。这样就可以提供您想要的输出。将函数定义为:-
function f(array){
newArray=[]
for(i of array){
newArray.push({elem:i})
}
return newArray
}
var array = [
{"name":"name1"},
{"name":"name2"},
{"name":"name3", children : [{"id":"1"}]}];
newArray=f(array)
console.log(newArray)
听起来像您想要这样的东西:
function insertKey(array) {
const newarray = [];
for (let i = 0; i < array.length; i++) {
const tempItem = {elem : array[i]};
if (array[i].children) {
tempItem.children = array[i].children.map(child => ({elem: child}));
}
newarray.push(tempItem);
}
return newarray;
}
新的条件映射每个孩子并按照您的描述进行包装。您将像这样使用它:
const newarray = insertKey(array);
编辑:请注意,此解决方案仅适用于一层嵌套。如果您需要进一步说明,那么您的问题(如上所述)不会为我们提供足够的信息,因为我们不知道您要包装的数据的架构。