如何遍历数组(递归)并在另一个数组中推送对象键/值对?



给定一个数组。我想创建一个函数递归,它循环遍历 arr 并在新数组 (arr2( 中推送键/值对,如下所示:

var arr2 = []
function recursive(arr) // function gets executed 
arr2 //will return the array with arrays
[
[ mike, 22]
[ robert, 12]
[ roger, 44]
[ peter, 28]
[ ralph, 67]
]

到目前为止,我有这段代码,但它将对象推送到 arr2 中,而不是数组中!

var arr =[{name:'mike', age:22},{name:'robert', age:12},{name:'roger', age:44},{name:'peter', age:28},{name:'Ralph', age:67}]
var arr2 = []
function recursive(arr) {
if (Array.isArray(arr)) {
arr.forEach(function(object) {
arr2.push(object)
})
}
}
recursive(arr)
console.log(arr2)

我该如何解决这个问题?

PS:由于我是初学者,请尽可能坚持我的代码方法。我相信有更好的方法可以做到这一点。

你可以简单地像这样映射:

var arr2 = arr.map(x=>[x.name, x.age]);

您可以映射对象的值。这适用于具有所需订单的对象

function getValues(array) {
return array.map(Object.values);
}
var array = [{ name: 'mike', age: 22 }, { name: 'robert', age: 12 }, { name: 'roger', age: 44 }, { name: 'peter', age: 28 }, { name: 'Ralph', age: 67 }] 
console.log(getValues(array));
.as-console-wrapper { max-height: 100% !important; top: 0; }

如果没有,您可以使用给定的键数组进行映射。

您可以映射对象的值。这适用于具有所需订单的对象

function getValues(array) {
var keys = ['name', 'age']
return array.map(o => keys.map(k => o[k]));
}
var array = [{ name: 'mike', age: 22 }, { name: 'robert', age: 12 }, { name: 'roger', age: 44 }, { name: 'peter', age: 28 }, { name: 'Ralph', age: 67 }] 
console.log(getValues(array));
.as-console-wrapper { max-height: 100% !important; top: 0; }

最新更新