Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.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 如何将字符串转换为数组_Javascript - Fatal编程技术网

Javascript 如何将字符串转换为数组

Javascript 如何将字符串转换为数组,javascript,Javascript,我向URL发出get请求。这是一个javascript文件,我得到一个字符串var oc=[object_1,object_2] 如何基于上面的字符串创建新数组?e、 g.让newArray=[object_1,object_2] 谢谢! 使用object.entries将每个对象转换为一个数组,并合并数组 常量obj1={1:500,2:15,5:4,4:480,10:87}; 常量obj2={1:500,2:15,5:4,4:480,10:87}; 常量myArray=Object.ent

我向URL发出get请求。这是一个javascript文件,我得到一个字符串var oc=[object_1,object_2]

如何基于上面的字符串创建新数组?e、 g.让newArray=[object_1,object_2]
谢谢!

使用object.entries将每个对象转换为一个数组,并合并数组

常量obj1={1:500,2:15,5:4,4:480,10:87}; 常量obj2={1:500,2:15,5:4,4:480,10:87}; 常量myArray=Object.entriesobj1.concatObject.entriesobj2;;
console.logmyArray 好的,您可以使用以下方法去除字符串的前缀和后缀:

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 = eval(result)
console.log(result);
然后使用:

result = JSON.parse(result);//this should give you a nice array with your objects in it
您可以从几个不同的来源找到我提到的方法的参考资料:

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

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 = eval(result)
console.log(result);
谢天谢地,有一种更好的方法可以使用这样的函数:


在这里,您可以将最后两种解析代码的方法中的引用读取为字符串:

假设它是用于浏览器。。您可以创建一个新的脚本标记,以便解析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)

[object_1,object_2]不是有效的json,应该是[object_1,object_2]@Ufuk我肯定他指的是javascript对象文本。。别把它当回事是的,不是。但是如果您遵循Xu–n在问题中提供的url,您将看到请求确实提供了有效的json。我们使用object_X只是为了缩短答案。我将在任何情况下更新我的答案,以提供工作代码。谢谢你指出这一点!没有提供的url不是有效的json,该数据中没有对象以这部分为例,在控制台中尝试您的代码:var oc=[{i:0,c:@BCC,m:Bitcoin cash Bitcoin cash,o:Bitcoin cash Bitcoin cash,san:8}]