Angular语言 - Map对象数组值到相同的键



我有一个这样的对象

const product = {
name: 'watch',
color: ['brown', 'white']
}

预期结果:

我需要将这个对象平展到低于对象格式

name: 'watch'
color: 'brown'
color: 'white'

要迭代product对象,我必须使用另一个内部for循环,如下所示。在迭代这个外部for循环之前,我需要像上面预期的结果那样平化输入product对象。这样我就可以避免额外的内部for循环来迭代数组值。如何简化呢?

for (const [key, val] of Object.entries(product)) {
if (Array.isArray(val)) {
if (val.length) {
for (const v of val) {
console.log('Array val key:' + key + ', val:' + v);
}
}
} else {
console.log('key:' + key + ', val:' + val);
};
}

我tsconfig。Json目标是es2015(es6), lib有es2017(es8)和es2018(es9)。不支持Es10及以上版本的功能。

我看到Dennis Ameling回答这里一个行来平铺嵌套对象,这与我的要求有些相同,但我不需要将数组键附加到父对象。

为什么我需要平化这个数组值到相同的键?

我必须将这些键值压入另一个数组,比如
let data = [];
this.data.push(`productkey${index}=${key}_productval${index}=${val}`);

我将把这种格式的数据推送到数据数组

productkey0=name_productval0=watch,
productkey1=color_productval1=brown,
productkey2=color_productval2=white,

现在有了上面的for循环,我必须在外部for循环和内部循环中使用push方法。我想简化一下。

我想缩短循环迭代代码,这样我就可以避免额外的内部for循环来迭代数组值

这不可能。如果你有一个嵌套的数据结构,你将需要嵌套循环来处理它。

然而,你可以放弃多余的val.length检查,如果数组为空,循环体已经不会运行。

for (const [key, val] of Object.entries(product)) {
if (Array.isArray(val)) {
for (const [i, v] of val.entries()) {
console.log('Array val key:' + key + '['+i+'], val:' + v);
}
} else {
console.log('key:' + key + ', val:' + val);
};
}

最新更新