我向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] 谢谢!
答案 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);