Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 如何定义二维数组生成的对象id_Javascript_Arrays_Object - Fatal编程技术网

Javascript 如何定义二维数组生成的对象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"

我已经从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"
    },
    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;
}, {});
控制台日志(输出)