Javascript 如何定义二维数组生成的对象id
我已经从2D数组生成了一个对象 然后,如何通过每个对象定义唯一的id?Javascript 如何定义二维数组生成的对象id,javascript,arrays,object,Javascript,Arrays,Object,我已经从2D数组生成了一个对象 然后,如何通过每个对象定义唯一的id? 以下代码中的“?”需要编辑 data = [ ["a", "b", "c"], ["a", "b"] ] for (i in data) { data[i] = data[i].map(c => ({id: ?, char:c}) ) } console.log(data) 假设采用以下结果格式 [ 0: { 0:{ "id": "?", "char": "a"
以下代码中的“?”需要编辑
data = [
["a", "b", "c"],
["a", "b"]
]
for (i in data) {
data[i] = data[i].map(c => ({id: ?, char:c}) )
}
console.log(data)
假设采用以下结果格式
[
0: {
0:{
"id": "?",
"char": "a"
},
1:{
"id": "?",
"char": "b"
},
2:{
"id": "?",
"char": "c"
}
},
1: {
0:{
"id": "?",
"char": "a"
},
1:{
"id": "?",
"char": "b"
}
}
]
我想迭代,但似乎需要展平对象,因此,我无法使用它,因为我不想更改原始对象的格式。您可以创建count变量来生成id
数据=[
[“a”、“b”、“c”],
[“a”、“b”]
]
让计数=0;
for(让我输入数据){
数据[i]=数据[i]。映射(c=>{
计数++;
返回{id:count,char:c}
} )
}
console.log(数据)
您可以创建count变量来生成id
数据=[
[“a”、“b”、“c”],
[“a”、“b”]
]
让计数=0;
for(让我输入数据){
数据[i]=数据[i]。映射(c=>{
计数++;
返回{id:count,char:c}
} )
}
log(数据)
您可以在其中映射单个对象,并将数组分配给一个对象。对外部阵列采用相同的方法
var数据=[[“a”、“b”、“c”]、[“a”、“b”],
结果=Object.assign(
{},
data.map(a=>Object.assign(
{},
a、 映射(char=>({id:'?',char}))
))
);
控制台日志(结果)代码>
。作为控制台包装{max height:100%!important;top:0;}
您可以映射内部的单个对象,并将数组分配给一个对象。对外部阵列采用相同的方法
var数据=[[“a”、“b”、“c”]、[“a”、“b”],
结果=Object.assign(
{},
data.map(a=>Object.assign(
{},
a、 映射(char=>({id:'?',char}))
))
);
控制台日志(结果)代码>
.as控制台包装{max height:100%!important;top:0;}
因为您想要的是对象而不是数组,所以无法使用.map
。因为您同时拥有父对象和嵌套对象,所以可以使用reduce
两次:
const数据=[
[“a”、“b”、“c”],
[“a”、“b”]
];
常量输出=数据减少((a,arr,i)=>{
a[i]=arr.reduce((obj,char,j)=>{
obj[j]={char,id:'?'};
返回obj;
}, {});
返回a;
}, {});
控制台日志(输出)代码>因为您想要的是对象而不是数组,所以无法使用.map
。因为您同时拥有父对象和嵌套对象,所以可以使用reduce
两次:
const数据=[
[“a”、“b”、“c”],
[“a”、“b”]
];
常量输出=数据减少((a,arr,i)=>{
a[i]=arr.reduce((obj,char,j)=>{
obj[j]={char,id:'?'};
返回obj;
}, {});
返回a;
}, {});
控制台日志(输出)代码>