Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.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数组反结构化和Object.entries_Javascript_Ecmascript 6_Destructuring - Fatal编程技术网

Javascript数组反结构化和Object.entries

Javascript数组反结构化和Object.entries,javascript,ecmascript-6,destructuring,Javascript,Ecmascript 6,Destructuring,这很简单:Object.entries。因此,我希望这段代码能够分解结构 [{ id: 1, name: "christian" },{ id : 2, name: "bongiorno" }].map(Object.entries).forEach(([k,v]) => console.log(`${k}: ${v}`)); 生产: id:1 name:christian id:2 name:bongiorno 但事实并非如此。相反,我得到的是: id,1: name

这很简单:
Object.entries
。因此,我希望这段代码能够分解结构

[{
  id: 1,
  name: "christian"
},{
  id : 2,
  name: "bongiorno"
}].map(Object.entries).forEach(([k,v]) => console.log(`${k}: ${v}`));
生产:

id:1 name:christian
id:2 name:bongiorno
但事实并非如此。相反,我得到的是:

id,1: name,christian
id,2: name,bongiorno

我遗漏了什么?

输出是正确的,但您的定义有点偏离,您遗漏了一个数组级别(数组的数组)

Object.entries
应该生成一个由键、值对组成的数组

console.log(
Object.entries({
id:1,
名称:“测试”
})

)
让我们试着放下
映射和
forEach
,看看您对每个对象做了什么:

let [k, v] = Object.entries({
  id: 1,
  name: "christian"
});
console.log(`${k}: ${v}`);

let [k, v] = Object.entries({
  id : 2,
  name: "bongiorno"
});
console.log(`${k}: ${v}`);
现在,如果我们展开
Object.entries
调用,则

let [k, v] = [
  ["id", 1],
  ["name", "christian"]
];
console.log(`${k}: ${v}`);

let [k, v] = [
  ["id", 2],
  ["name", "bongiorno"]
];
console.log(`${k}: ${v}`);
这非常准确地反映了您所看到的-
k
v
正在获得指定的数组

您需要嵌套两个循环:

const arr = [{
  id: 1,
  name: "christian"
}, {
  id: 2,
  name: "bongiorno"
}];
for (const obj of arr)
    for (const [k, v] of Object.entries(obj))
        console.log(k+": "+v);

因为您的数据不是简单的对象,所以它的对象数组。对象数组包含对象,因此需要嵌套循环来遍历数据。@WasifKhan问题中没有JSON。。。另外,我没有添加“JSON对象”这样的东西来展平它。看起来好多了。我应该更新这个问题吗?提供一个答案?@ChristianBongiorno听起来像是一个答案,不属于这个问题。我补充了以下内容up@ChristianBongiorno您需要某种类型的
flatMap
,这在JS中是不存在的。但是如果你用一个简单的
for of
循环来代替
forEach
,这是一个很容易的问题,而不是
for
循环,我只是
。reduce((a,b)=>a.concat(b),[])
将它展平这就是我一直在寻找的,我做到了。但是,我更困惑于其他事情。我想我会提出一个新问题。