- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Javascript 中,我有一个字符串需要转换为对象数组。
//ORIGINAL STRING :
var originalString = "[13, "2017-05-22 17:02:56", "Text111"], [25, "2017-05-22 17:03:03", "Text222"], [89, "2017-05-22 17:03:14","Text333"]";
我需要能够遍历每个对象,并使用索引获取 3 个属性。这将给出(对于第一个数组):
myItem[0] => 13
myItem[1] => "2017-05-22 17:02:56"
myItem[2] => "Text111"
起初我觉得这很简单(很可能是这样),但经过几次尝试后,我仍然卡住了。
请注意,我不能使用 jQuery,因为运行时使用的是非常古老的 Javascript 规范:“Microsoft JScript”,它符合 EcmaScript 3。
谢谢你;)
最佳答案
如果您可以使用 JSON.parse
,那么您就可以将 [
和 ]
附加到一个文件的开头和结尾字符串,然后将其解析为数组的数组。
var originalString = '[13, "2017-05-22 17:02:56", "Text111"], [25, "2017-05-22 17:03:03", "Text222"], [89, "2017-05-22 17:03:14","Text333"]';
var result = JSON.parse("[" + originalString + "]");
console.log(result);
但是,据我所知,JSON.parse
不符合 ECMAScript 3 标准,因此您必须自己解析它。
这样的事情应该有所帮助:
var originalString = '[13, "2017-05-22 17:02:56", "Text111"], [25, "2017-05-22 17:03:03", "Text222"], [89, "2017-05-22 17:03:14","Text333"]';
function trimString(str, trims) {
var left = 0;
var right = str.length - 1;
while (left < right && trims.indexOf(str[left]) != -1) {
left++;
}
while (left < right && trims.indexOf(str[right]) != -1) {
right--;
}
return str.substr(left, right - left + 1);
}
function splitByCommasOutOfBrackets(str) {
var result = [];
var current = "";
var bracketBalance = 0;
for (var i = 0; i < str.length; i++)
{
switch (str[i]) {
case '[':
current = current + str[i];
bracketBalance++;
break;
case ']':
current = current + str[i];
bracketBalance--;
break;
case ',':
if (bracketBalance === 0) {
result.push(trimString(current, [" ", "[", "]", "\""]));
current = "";
} else {
current = current + str[i];
}
break;
default:
current = current + str[i];
break;
}
}
if (current.length > 0) {
result.push(trimString(current, [" ", "[", "]", "\""]));
}
return result;
}
var arr = splitByCommasOutOfBrackets(originalString);
console.log("1: Split by commas which separate arrays");
console.log(arr);
for (var i = 0; i < arr.length; i++) {
arr[i] = splitByCommasOutOfBrackets(arr[i]);
}
console.log("2: Split every array by the same rules");
console.log(arr);
我不太确定 ECMAScript 3 中存在哪些功能,为此我使用了 MDN。看起来很多功能甚至像String.prototype.trim
在 ECMAScript 3 中不存在。所以我不得不自己重新实现它。如果我错了并且您可以在 JScript 中使用它们,那么只需使用其中的一些函数即可。
算法的总体思路如下:
请注意,在此解决方案中,所有值都作为字符串进行线程化。
如果你有更多的嵌套级别,它可以用递归的方式重写而不是循环,但它会不太容易理解 - 我只是提供了一个最小的解决方案,它有效 :) 我相信你可以在很多方面改进它。
关于javascript - 如何将字符串转换为 JScript 对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44171790/
我编写 JSCript 并使用 WindowsScriptHost 运行它。但是,它似乎缺少 Array.forEach()。 ['a', 'b'].forEach(function(e) {
在我的环境中,如果我使用 JScript 语法创建一个类: class test{ } 然后将其保存到名为“test.js”的文件并使用 wscript 运行它,我在第 1 行收到 Microsoft
我有一个“for”循环,它必须转换数千个相互不依赖的文件中的内容。代码是用 JScript 编写的。我想添加一些线程代码来在 CPU 之间分发文件,因为其他的似乎是空闲的。我试图在 JScript 中
大家早上好 我目前正在编写一个小的 batch/jscript/hta 程序。 在下面的程序中,我读取了一个文本输入字段,将文本传递给批处理并在那里显示: HTA Buttons windo
我无法在我的机器上的 IE8 中打开 gwt-html 页面(在 Mozila FF 中加载)。当我在我的 html 页面中调试 Js 时,我收到以下错误消息Jscript 调试器。中断 JScrip
var scriptFile = $(tempNode).attr("customJScriptSrc"); 当通过这个我得到 “Reference Error: Can’t find variabl
有没有办法使用 Windows Scripting Host 在注册表中搜索特定键? 我正在使用 JavaScript (Jscript/VBScript?) 来执行此操作,而 msdn 库未提及任何
请考虑以下WSH代码段: var query = GetObject(“winmgmts:”)。ExecQuery(“SELECT Name FROM Win32_Printer”,“WQL”,0);
我有一个用 JScript(不是 javascript)编写的函数,我需要暂停直到某个全局变量变为真。当在 ajax 响应后调用另一个函数时,全局变量更改为 true: function(req, e
var FSO = new ActiveXObject("Scripting.FileSystemObject"); var BFolder = "C:\\temp"; var XFolder
重新发布工作代码 (我试图从我的 ActiveX 组件获取数组,但没有成功。当我运行脚本时,我得到空消息框,但我知道数组在那里:) var objMain, objAdapt, lgCount, st
几年来,我一直在 EA 中广泛使用脚本。今天早上,我进入 EA 开始构建新脚本,但脚本似乎不再有效。我试着写“Hello World”,甚至写了一个有语法错误的脚本。它既不检测错误也不运行脚本。 我看
我正在尝试在我的网页中构建一个“ Accordion ”样式的可折叠 div,如 w3c 学校此处所述... accordion description 我已经完成了大部分工作 - 我的代码是这样的:
我最近注意到,我用来编译和使用 C# 文件(如我的应用程序中的脚本)的库 (CSScript) 也可以编译 VB 和 JScript。不过,我的一个应用程序使用了 await/async (C# 5)
我一直在尝试查找一些关于 jscript 编程的文档,这样我就可以自己编写它,但是找不到所需的文档.... 我的问题是:我一直在尝试编写一个 jscript,它将通过网络连接并添加打印机...。其中一
这看起来应该很容易。我以前从未使用过 JScript,我正在查看 microsoft 提供的 JScript api,但没有运气。这是我所拥有的: var fso, tf; fso = new
我可以在“Microsoft JScript”中使用什么来代替带有字符串的length()。 String类没有方法length()或者我没有找到。获取字符串长度的最佳方法是什么? 最佳答案 应该有一
在config.txt中,我有以下字符串: Dispatcher=argo Address=10.5.23.14 User=joe 在我的script.js中,我有变量: var Dispatcher
我正在尝试建立一个小型 JavaScript 实验室。在实验室中,首先我创建了一个 Animal 对象: function Animal(species, nature) { this.speci
我收到运行时错误 Microsoft JScript 运行时错误:“document.getElementById(...)”为 null 或不是对象 我正在使用母版页。 谁能帮帮我 最佳答案 发
我是一名优秀的程序员,十分优秀!