给出以下JS对象
selectedFolder

我想让它按照它所处的顺序返回。 的console.log(STK [24]);
应该返回: 221,220,224,226,198而不是 198,220,221,224,226
我想要tf.contrib.seq2seq.dynamic_docode
。
问题:这里的问题是我无法控制var stk的构造;因为它是在第三方插件的PHP代码中构建的。
有没有办法以与它们相同的顺序返回值。
答案 0 :(得分:4)
我可以阻止JS对象数字属性的自动排序吗?
你不能。但是你无论如何都不应该关注或关注JavaScript对象中的属性顺序。虽然他们有订单(现在),但最好表现得好像他们没有订单一样。如果您想要特定的订单,请使用数组(也是一个对象,以及为什么以数字顺序访问作为整数索引的属性名称的部分原因)。
这里的问题是我无法控制var stk的构造;因为它是在第三方插件的PHP代码中构建的。
如果是这样的话,你就无法做任何事情。如果您可以让PHP将其输出为字符串,例如:
var stk = "{3:{221:1,220:1,224:1,226:1,198:1},24:{221:1,220:1,224:1,226:1,198:1},33:{198:1},9:{223:1,221:1,220:1,224:1,226:1,198:1},156:{220:1,224:1,226:1}}";
...然后你可以自己解析并保持秩序。但如果你不能做到这一点,你就无能为力。
如果它是内嵌script
标记而不是.js
文件(如果它是'),您可以向后弯曲并在JavaScript文本中找到它。 sa .js
文件,您阅读它的能力将取决于它是否来自与您的网页相同的来源。
例如:
var text = $("#from-plugin").text();
var match = /var stk=(\{.*\};)/.exec(text);
console.log(match ? match[1] : "Couldn't find it");

<script id="from-plugin">
// other stuff
var stk={3:{221:1,220:1,224:1,226:1,198:1},24:{221:1,220:1,224:1,226:1,198:1},33:{198:1},9:{223:1,221:1,220:1,224:1,226:1,198:1},156:{220:1,224:1,226:1}};
// other stuff
</script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
&#13;
...然后,您必须将其解析为数组数组。在这种情况下,可能不是特别困难。