如何将字符串转换为数组

时间:2020-04-27 19:22:09

标签: javascript

我向URL“ http://cafef3.mediacdn.vn/v2/kby/ccf4d584-4b06-4370-acff-c0241b4ad0d6/kby.js”发出了获取请求。这是一个JavaScript文件,我得到一个字符串“ var oc = [object_1,object_2]”。

如何基于上面的字符串创建一个新数组?例如让newArray = [object_1,object_2] 谢谢!

3 个答案:

答案 0 :(得分:1)

假设它适用于浏览器..您可以创建一个新的脚本标签(以便将解析javascript文件的内容),然后从那里分配新变量。 这是一些代码供参考:

const newScriptTag = document.createElement('script')
newScriptTag.textContent = content; // content is the value of the js file (var oc... )
document.body.append(newScriptTag)
let newArray = oc;
// then remove the script tag
document.body.removeChild(scriptTag)

答案 1 :(得分:-1)

好吧,您可以使用类似以下内容来摆脱字符串的前缀和后缀:

let result = 'var oc=["object_1", "object_2"];';
result = result.replace('var oc=','');//to remove the variable definition from the start
result = result.slice(0,-1);//to remove ';' at the end. You can use this, because strings are arrays of characters

然后使用:

result = JSON.parse(result);//this should give you a nice array with your objects in it

您可以从几个不同的来源找到我提到的方法的参考:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse

https://www.w3schools.com/jsref/jsref_replace.asp

https://www.w3schools.com/jsref/jsref_slice_array.asp

编辑: 如果您的请求返回的是有效的JSON,则JSON.parse()的最后一部分将起作用。但这不是JS代码,代表对象的定义。要对此进行解析,您可以使用eval()。但是您应该谨慎行事,并且只能在从可靠来源返回的字符串中使用它,因为这可能会无意间在您的代码中执行恶意代码。 也就是说,解决您的问题的最后一行代码如下:

result = eval(result)
console.log(result);

非常感谢,有一种使用Function()的更好方法,如下所示:

result = Function('"use strict";return (' + result + ')')
console.log(result());

您可以在以下两种将代码解析为字符串的最后两种方法中阅读参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval#Never_use_eval

答案 2 :(得分:-2)

使用Object.entries将每个对象转换为数组,然后合并数组。

const obj1 = { "1": 500, "2": 15, "5": 4, "4": 480, "10": 87 };
const obj2 = { "1": 500, "2": 15, "5": 4, "4": 480, "10": 87 };
const myArray = Object.entries(obj1).concat(Object.entries(obj2));;
console.log(myArray);

相关问题