Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.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
如何解决nodejs javascript中的“…”错误_Javascript_Arrays_Node.js_Json - Fatal编程技术网

如何解决nodejs javascript中的“…”错误

如何解决nodejs javascript中的“…”错误,javascript,arrays,node.js,json,Javascript,Arrays,Node.js,Json,我是新来的NodeJS。 代码如下: const a = [ { wa_id: 1, wa_property_id: 'p1', wa_view_name: 'ram', wa_view_id:1 }, { wa_id: 1, wa_property_id: 'p1', wa_view_name: 'sam', wa_view_id:'v2'

我是新来的
NodeJS
。 代码如下:

const a = [
    {
        wa_id: 1,
        wa_property_id: 'p1',
        wa_view_name: 'ram',
        wa_view_id:1
    },
    {
        wa_id: 1,
        wa_property_id: 'p1',
        wa_view_name: 'sam',
        wa_view_id:'v2'
    },
    {
        wa_id: 1,
        wa_property_id: 'p2',
        wa_view_name: 'kam',
        wa_view_id:'v3'
    },
    {
        wa_id: 2,
        wa_property_id: 'p5',
        wa_view_name: 'pri',
        wa_view_id:'v4'
    },
    {
        wa_id: 1,
        wa_property_id: 'p3',
        wa_view_name: 'ste',
        wa_view_id:'v5'
    },
];

var result = a.reduce((acc,rec) =>{
//if result object doesn't contain key for wa_id - add new id key
if(!(Object.keys(acc).includes(rec.wa_id.toString())))
{
  return {...acc, [rec.wa_id]: {[rec.wa_property_id]:{[rec.wa_view_id]:rec.wa_view_name}}}
}
//if result id object doesn't contain key for property - add new property key
if(!(Object.keys(acc[rec.wa_id]).includes(rec.wa_property_id.toString())))
{
    // acc[rec.wa_id] = {...acc[rec.wa_id],[rec.wa_property_id]:[rec.wa_view_name] }
    acc[rec.wa_id] = {...acc[rec.wa_id],[rec.wa_property_id]:{[rec.wa_view_id]:rec.wa_view_name} }
  return acc
}
//otherwise add new value to array of properties
acc[rec.wa_id][rec.wa_property_id][rec.wa_view_id] = rec.wa_view_name
return acc
},{})

console.log("Output: ",result)
我犯了以下错误。下面的错误图像

它正在使用在线
Javascript代码编辑器
。但在我的系统中,它显示了上述错误。 在互联网上搜索了一段时间后,我发现我的
nodejs
不支持
如何让它支持。我正在使用最新的
节点JS
版本(我的节点JS版本:v12.16.1)。帮我解决一些问题

(base) paulsteven@smackcoders:~/data-filters/flax2.0/flax_back_end$ node -v
v12.16.1

您必须配置您的babel脚本

步骤1:使用安装模块

npm安装--保存dev babel插件转换对象rest-spread

第2步:将此添加到babel配置文件中


“plugins”:[[“transform object rest spread”,{“useBuiltIns”:true}]
谢谢@Niraj Patel,工作正常,但我没有
.bablerc
文件。所以我手动创建了它

(base) paulsteven@smackcoders:~/root_of_project/$ vim .babelrc
对于那些在项目根文件夹中没有
.bablerc
文件的用户。手动创建它

(base) paulsteven@smackcoders:~/root_of_project/$ vim .babelrc
按照上面建议的答案添加内容

{
    "plugins": [
        ["transform-object-rest-spread", {
            "useBuiltIns": true
        }]
    ]
}

保存它,它就完成了……

我知道最初的问题是在节点中设置rest操作符,但对于那些不想配置Babel的人,他们可能会使用默认情况下在节点中可用的等效工具:

const foo = { x: 'v1', y: 'v2' };
const bar = { z: 'v3' };
我们希望使用spread操作符合并两个对象,如:

const merged = { ...foo, ...bar };
但是我们的工具箱中没有rest操作符,所以我们使用
在幕后实际做的事情:

const merged = Object.assign({}, foo, bar);
值得一提的是,
..
Object.assign()
都不会产生所谓的深度复制,这意味着如果您希望以不可变的方式编码,则应始终嵌套这些运算符或使用导致深度复制的内容,如:

const merged = JSON.parse(JSON.stringify(Object.assign({}, foo, bar)));
这样,如果原始对象(
foo
bar
在此场景中)具有任何非原始值,则可以确保不会对不希望的任何对象进行变异


请原谅我说得这么详细,但我认为这可能会帮助一些人阅读这个问题,并成为JS/TS生态系统的新手。:)

这是否回答了您的问题?您使用的Node的确切版本是什么?从8.3.0开始支持对象文本中的扩展运算符。如果您能显示
节点-v的输出,仅供参考,您的代码对我来说很好/@Vivek Molkar,我的节点js版本:v12.16.1我很高兴它对您有所帮助。不客气。快乐编码。