gpt4 book ai didi

javascript - 组合多个数组的相同索引的最佳方式

转载 作者:行者123 更新时间:2023-12-01 00:14:22 26 4
gpt4 key购买 nike

我有一个包含三个数组的数组,每个数组包含两个元素。我想更改它,以便有两个新数组,每个数组都包含三个原始数组中的相同索引。三个原始数组之一包含对象作为其元素,我也想将它们展平,并且仅在新数组中包含它们的值。

这是我到目前为止所拥有的:

const results = [
[0, 1],
[{a: 'a1a1a1', b: 'b1b1b1'}, {a: 'a2a2a2', b: 'b2b2b2'}],
['zero', 'one']
];

let values = [];

let num = 1;

while (num >= 0) {
let cardVals = results.map(c => c[num]);
values.unshift(cardVals);
num--;
};

console.log(values);

我的控制台日志目前如下所示:

[ [ 0, { a: 'a1a1a1', b: 'b1b1b1' }, 'zero' ],
[ 1, { a: 'a2a2a2', b: 'b2b2b2' }, 'one' ] ]

但我希望它看起来像这样:

[ [ 0, 'a1a1a1', 'b1b1b1', 'zero' ],   
[ 1, 'a2a2a2', 'b2b2b2', 'one' ] ]

我可以检查它是我的 map 中的数组还是 js 对象,但是有没有办法在不这样做的情况下做到这一点?

最佳答案

您需要检查该元素是否是一个对象。如果是,您需要使用 Object.values() 来获取值的数组。然后,您可以使用 concat() 将它们连接到结果的当前元素。

const results = [
[0, 1],
[{
a: 'a1a1a1',
b: 'b1b1b1'
}, {
a: 'a2a2a2',
b: 'b2b2b2'
}],
['zero', 'one']
];

let values = [];

for (let i = 0; i < 2; i++) {
let cardValues = [];
results.forEach(el => {
if (typeof el[i] == 'object') {
cardValues = cardValues.concat(Object.values(el[i]));
} else {
cardValues.push(el[i]);
}
});
values.push(cardValues);
}

console.log(values);

关于javascript - 组合多个数组的相同索引的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59869511/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com