Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 以两个不同大小数组的笛卡尔乘积为例_Javascript_Arrays - Fatal编程技术网

Javascript 以两个不同大小数组的笛卡尔乘积为例

Javascript 以两个不同大小数组的笛卡尔乘积为例,javascript,arrays,Javascript,Arrays,我不知道该怎么做。我可能需要组合两个阵列: const users = [ { user: 'user_1', }, { user: 'user_2', }, { user: 'user_3', }, { user: 'user_4', }, ] 及 组合后,结果应如下所示: const result = [ { user: 'user_1', label:

我不知道该怎么做。我可能需要组合两个阵列:

const users = [
    {
        user: 'user_1',
    },
    {
        user: 'user_2',
    },
    {
        user: 'user_3',
    },
    {
        user: 'user_4',
    },
]

组合后,结果应如下所示:

const result = [
    { user: 'user_1', label: 'label_1' },
    { user: 'user_1', label: 'label_2' },
    { user: 'user_2', label: 'label_1' },
    { user: 'user_2', label: 'label_2' },
    { user: 'user_3', label: 'label_1' },
    { user: 'user_3', label: 'label_2' },
    { user: 'user_4', label: 'label_1' },
    { user: 'user_4', label: 'label_2' },
]
但是,
用户
看起来也可能是这样:

const users = [
    {
        user: 'user_1',
    },
]
标签

const labels = [
    {
        label: 'label_1',
    },
    {
        label: 'label_2',
    },
    {
        label: 'label_3',
    },
    {
        label: 'label_4',
    },
]
然而,结果应该是这样的:

const result = [
    { user: 'user_1', label: 'label_1' },
    { user: 'user_1', label: 'label_2' },
    { user: 'user_1', label: 'label_3' },
    { user: 'user_1', label: 'label_4' },
]

如果这真的很琐碎,请原谅,我们已经关注这一点有一段时间了。

只需使用嵌套循环:

const result=[];
for(用户的常量{user}){
for(标签的常量{label}){
push({user,label});
}
}
控制台日志(结果);
或者,在不分解和合并对象的所有属性的情况下:

const result=[];
for(const user of users){
用于(标签的常量标签){
push({…user,…label});
}
}
控制台日志(结果);

只需使用嵌套循环:

const result=[];
for(用户的常量{user}){
for(标签的常量{label}){
push({user,label});
}
}
控制台日志(结果);
或者,在不分解和合并对象的所有属性的情况下:

const result=[];
for(const user of users){
用于(标签的常量标签){
push({…user,…label});
}
}
控制台日志(结果);

我建议您了解javascript的功能特性

users.map(e=>labels.map(g=>({…e,…g})).flat()

它遍历两个列表,创建一个合并对象,然后由于labels.map返回一个数组,我们将其展平(例如与原始数组合并)

我建议您了解javascript的功能特性

users.map(e=>labels.map(g=>({…e,…g})).flat()
它遍历两个列表,创建一个合并的对象,然后由于labels.map返回一个数组,我们将其展平(例如与原始数组合并)

看起来,您需要给定数组的一部分

对于这种方法,可以使用一个返回数组乘积的函数。对于另一个数组,可以在函数调用中轻松添加新参数

const
笛卡尔=(…数组)=>array.reduce((a,b)=>a.reduce((r,v)=>r.concat(b.map(w=>({…v,…w})),[]),
users=[{user:'user_1'},{user:'user_2'},{user:'user_3'},{user:'user_4'}],
labels=[{label:'label_1'},{label:'label_2'}],
结果=笛卡尔(用户、标签);
控制台日志(结果)
.as控制台包装{max height:100%!important;top:0;}
看起来,您需要一个给定数组的名称

对于这种方法,可以使用一个返回数组乘积的函数。对于另一个数组,可以在函数调用中轻松添加新参数

const
笛卡尔=(…数组)=>array.reduce((a,b)=>a.reduce((r,v)=>r.concat(b.map(w=>({…v,…w})),[]),
users=[{user:'user_1'},{user:'user_2'},{user:'user_3'},{user:'user_4'}],
labels=[{label:'label_1'},{label:'label_2'}],
结果=笛卡尔(用户、标签);
控制台日志(结果)
。作为控制台包装{最大高度:100%!重要;顶部:0;}
const result = [
    { user: 'user_1', label: 'label_1' },
    { user: 'user_1', label: 'label_2' },
    { user: 'user_1', label: 'label_3' },
    { user: 'user_1', label: 'label_4' },
]