Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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 Array.map函数为';t应用于对象值_Javascript_Arrays_Ajax_Object_Ecmascript 6 - Fatal编程技术网

Javascript Array.map函数为';t应用于对象值

Javascript Array.map函数为';t应用于对象值,javascript,arrays,ajax,object,ecmascript-6,Javascript,Arrays,Ajax,Object,Ecmascript 6,我正在尝试重新映射来自API调用的对象。 答复的格式如下: data: { foo: [{ id: "1", name: "joe", info: "whatever" }, { id: "2", name: "anna", info: "whatever" },...], bar: [...] } 我用来在每个响应数组中重新映射对象的代码是: const DATA

我正在尝试重新映射来自API调用的对象。 答复的格式如下:

data: {
    foo: [{
        id: "1",
        name: "joe",
        info: "whatever"
    }, {
        id: "2",
        name: "anna",
        info: "whatever"
    },...],
    bar: [...]
}
我用来在每个响应数组中重新映射对象的代码是:

const DATA = response.data;
const entries = Object.entries(DATA);

for (const entry of entries) {
    entry[1].map(entry => ({
        id: entry["id"],
        mixed_info: entry["name"] + ", " + entry["info"]
    }));
}
当I console.log在此之后记录数据时,它将显示与初始响应相同的内容,就好像它完全忽略了map函数一样


我做错了什么?感谢您的关注。

map
返回一个新数组,您将忽略调用的结果。

您必须重新分配
条目

  entry[1] = entry[1].map(/*...*/);
但是,这只会反映到
条目中的数组中,它不会更改
数据。要改变这一点,您必须在末尾将键值对转换回对象:

  DATA = Object.fromEntries(entries);
或者,您必须在迭代时重新分配数据属性:

   DATA[ entry[0] ] = entry[1].map(/*...*/);

我会:

  const { data } = response;

  for(const [key, value] of Object.entries(data)) {
     data[key] = value.map(/*...*/);
  }

分配
map
调用的结果:

entry[1] = entry[1].map(...);
返回一个新数组-它不修改原始数组

    let result = {};
    for (const entry of entries) {
        result[entry[0]] = entry[1].map(entry => ({
            id: entry.id,
            mixed_info: `${entry["name"]  }, ${  entry["info"]}`,
        }));
    }

“result”包含精确的重新映射对象。

您需要将
map()
函数的结果指定给某个对象。..map()使用结果创建一个新数组。var updatesEntry=entry[1].map()……虽然我的答案事实上是正确的,但不清楚您实际想要实现什么,如果您明确表示,我可以修改我的答案以说明如何实现它。正如已经发现的那样,您应该利用map返回值,而且
的没有提供参考,但我完全忘记了,我的错。谢谢,就这样。