Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.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 JS函数遍历对象并仅打印特定键的值,返回未定义的值_Javascript_Object - Fatal编程技术网

Javascript JS函数遍历对象并仅打印特定键的值,返回未定义的值

Javascript JS函数遍历对象并仅打印特定键的值,返回未定义的值,javascript,object,Javascript,Object,这是我的输入对象,我想通读它并查找以下“类别”:“映射”,然后创建一个数组,如下所示 { "class": "go.GraphLinksModel", "nodeDataArray": [ {"isGroup":true, "key":-1, "text":"SP", "xy":"-5 269.225"}, {"isGroup":true, "key":-2, "text":"DM", "xy":"300 243.26562500000003"}, {"ke

这是我的输入对象,我想通读它并查找以下“类别”:“映射”,然后创建一个数组,如下所示

{ "class": "go.GraphLinksModel",
      "nodeDataArray": [ 
    {"isGroup":true, "key":-1, "text":"SP", "xy":"-5 269.225"},
    {"isGroup":true, "key":-2, "text":"DM", "xy":"300 243.26562500000003"},
    {"key":100, "Data":"device", "group":-2},
    {"key":101, "Data":"name : Device1", "group":-2},
    {"key":102, "Data":"config", "group":-2},
    {"key":103, "Data":"interface", "group":-2},
    {"key":104, "Data":"Loopback", "group":-2},
    {"key":105, "Data":"name : {loopback-intf}", "group":-2},
    {"key":106, "Data":"description", "group":-2},
    {"key":107, "Data":"_tags : merge", "group":-2},
    {"key":108, "Data":"__text : Loopback{loopback-intf}", "group":-2},
    {"key":109, "Data":"ip", "group":-2},
    {"key":110, "Data":"address", "group":-2},
    {"key":111, "Data":"primary", "group":-2},
    {"key":112, "Data":"address : {ip-address}", "group":-2},
    {"key":113, "Data":"mask : 255.255.255.255", "group":-2},
    {"key":114, "Data":"_xmlns : http://someweb.org", "group":-2},
    {"key":115, "Data":"_tags : merge", "group":-2},
    {"key":116, "Data":"Loopback", "group":-2},
    {"key":117, "Data":"name : {loopback-intf}", "group":-2},
    {"key":118, "Data":"description", "group":-2},
    {"key":119, "Data":"_tags : merge", "group":-2},
    {"key":120, "Data":"__text : Loopback{loopback-intf}", "group":-2},
    {"key":121, "Data":"ip", "group":-2},
    {"key":122, "Data":"address", "group":-2},
    {"key":123, "Data":"primary", "group":-2},
    {"key":124, "Data":"address : {ip-address}", "group":-2},
    {"key":125, "Data":"mask : 255.255.255.255", "group":-2},
    {"key":126, "Data":"_xmlns : http://sometest.org", "group":-2},
    {"key":127, "Data":"_tags : merge", "group":-2},
    {"key":0, "Data":"container car", "group":-1},
    {"key":1, "Data":"container v8_engine", "group":-1},
    {"key":2, "Data":"leaf-list cylinder-arrangement", "group":-1},
    {"key":3, "Data":"type string", "group":-1},
    {"key":4, "Data":"max-elements 8", "group":-1},
    {"key":5, "Data":"container other-parts", "group":-1},
    {"key":6, "Data":"list per-cylinder-parts", "group":-1},
    {"key":7, "Data":"leaf piston-diameter", "group":-1},
    {"key":8, "Data":"type uint32", "group":-1},
    {"key":9, "Data":"range 2000... 9000", "group":-1},
    {"key":10, "Data":"container valves", "group":-1},
    {"key":11, "Data":"leaf number", "group":-1},
    {"key":12, "Data":"list position", "group":-1},
    {"key":13, "Data":"type change", "group":-1}
     ],
      "linkDataArray": [ 
    {"from":100, "to":101},
    {"from":100, "to":102},
    {"from":102, "to":103},
    {"from":103, "to":104},
    {"from":104, "to":105},
    {"from":104, "to":106},
    {"from":106, "to":107},
    {"from":106, "to":108},
    {"from":104, "to":109},
    {"from":109, "to":110},
    {"from":110, "to":111},
    {"from":111, "to":112},
    {"from":111, "to":113},
    {"from":103, "to":114},
    {"from":103, "to":115},
    {"from":103, "to":116},
    {"from":116, "to":117},
    {"from":116, "to":118},
    {"from":118, "to":119},
    {"from":118, "to":120},
    {"from":116, "to":121},
    {"from":121, "to":122},
    {"from":122, "to":123},
    {"from":123, "to":124},
    {"from":123, "to":125},
    {"from":103, "to":126},
    {"from":103, "to":127},
    {"from":0, "to":1},
    {"from":1, "to":2},
    {"from":2, "to":3},
    {"from":2, "to":4},
    {"from":0, "to":5},
    {"from":5, "to":6},
    {"from":6, "to":7},
    {"from":7, "to":8},
    {"from":7, "to":9},
    {"from":6, "to":10},
    {"from":10, "to":11},
    {"from":10, "to":12},
    {"from":5, "to":13},
    {"category":"Mapping", "from":4, "to":116},
    {"category":"Mapping", "from":6, "to":104},
    {"category":"Mapping", "from":9, "to":116},
    {"category":"Mapping", "from":12, "to":109}
     ]}
但即使是简单的代码

category:[{a:4,b:116},{a:6,b:104},{a:9,b:116},{a:12,b:109}]
将输出设为未定义

注意:如果我像var data=that对象那样传递硬编码的数据,它工作得很好,但是我动态分配它的数组和尝试访问元素的数组是一样的,我会得到unassigned。不确定是什么原因造成的:(

我还尝试了以下方法

console.log(data.linkData.Array); 

然后访问数据,但运气不佳

这将访问筛选和映射以获得所需结果:

var data = JSON.parse(JSON.stringify(savedDiagramModel));

如果要在纯Javascript中执行此操作:

var result = data.linkDataArray.filter(function(item) {
    return item.category;
}).map(function(item) {
    return {a: item.from, b: item.to};
});


/*
[{
  a: 4,
  b: 116
}, {
  a: 6,
  b: 104
}, {
  a: 9,
  b: 116
}, {
  a: 12,
  b: 109
}]
*/
var类别=[];
对于(var i=0;i
问题在于动态数据

因此,在解析对象之前,我必须添加以下行

var category = [];
for (var i=0; i < data.linkDataArray.length; i++) {
    var o = data.linkDataArray[i];

    if (typeof(o.category) !== 'undefined') category.push({ a:o.from, b:o.to });
}

然后添加一个函数,通过linkDataArray进行解析,然后根据需要创建一个对象。

您可能应该发布用于迭代该对象的JS代码。这里的想法是显示您尝试过但不起作用的代码,而不是让我们从scratchIs
category
为您编写所有这些代码
数据
对象?它是否应该替换
数据.linkDataArray
中的所有其他
{“category”:“Mapping”、
..
}
对象?据我所知,您只需要这些
{“category”:“Mapping”、
..
}
对象就可以创建所需的数组 — (数据中的var prop){没有做任何事情。当然,你没有成功。你的实际尝试是什么?实际上,问题似乎与即将出现的动态数据有关。当我尝试分配数据的逻辑或下面的任何函数时,我不确定是什么导致了它,但如果我分配了动态json并使用根据这种逻辑,我无法读取UndefinedHanks guys的属性'length'。但我仍然无法读取undefined的属性'length'。不确定动态数据的格式有什么问题。奇怪的是,如果我复制相同的数据,并将其作为硬编码值提供给数据,然后运行这些函数,它就可以工作了。你可能需要发布你所有的code…构建阵列时出现问题。
let jsonObject =JSON.parse(savedDiagramModel);