在javascript中将字符串数组转换为数组

Posted

技术标签:

【中文标题】在javascript中将字符串数组转换为数组【英文标题】:Convert string array to array in javascript 【发布时间】:2017-05-15 03:27:41 【问题描述】:

我从我的 django-rest-framework api 调用中得到以下项目:

services = "['service1', 'service2', 'service3']"

我要services = ['service1', 'service2', 'service3']

在我的 javascript 中,我尝试了 services = JSON.parse(services) - 什么都没做,也试过$.parseJSON(services)

在我的序列化程序中,我尝试将设置服务设置为ListField,也尝试了JSONSerializerField()

class JSONSerializerField(serializers.Field):
    # Adapted from http://***.com/a/28200902
    def to_internal_value(self, data):
        return json.loads(data)

    def to_representation(self, value):
        return value

【问题讨论】:

JSON 中没有赋值,只有 = 右侧的数据,看起来 JSON 应该在项目上有 " 而不是 ',而且不要过度-全部引用。 您帖子中的services 是变量还是您收到的项目的一部分? 它是我从我的电话中收到的。我将它作为 services = JSONField(blank=True, default=list) 存储在我的模型中。我会尝试引用技巧,认为这可能是解析问题。 不要尝试使用自己的代码创建 JSON。使用json.dumps() 【参考方案1】:

这用于将数组的字符串转换为纯数组

var a = '[Aakash,akash]'
a.replace(/\[|\]/g,'').split(',')
(2) ["Aakash", "akash"]

【讨论】:

【参考方案2】:

尝试使用:

var services = "['service1', 'service2', 'service3']"
services = services .split(",");
services [0] = services [0].substring(1);
services [services .length - 1] = services [services .length - 1].substring(
  0,
  services [services .length - 1].length - 1
);
services .forEach((x, i) => 
  services [i] = services [i].includes('"') ? services [i].replaceAll('"', "").trim()
     : services [i].replaceAll("'", "").trim();
);

console.log(services );

【讨论】:

【参考方案3】:

我最近发现了一种解决类似问题的迂回方法。我想将数组作为数据属性存储在 html 元素中,以便稍后在 JS 中使用它。但是,这样的 HTML 属性只能存储为字符串。为了解决这个...

    首先,我将数组转换为单个字符串,每个值用逗号分隔(例如,["test 1", "test 2", "test 3"] 写作“test 1,test 2,test 3”)。 接下来,我将新字符串输入到所需的 HTML 数据属性中。 (例如<div data-somedata="test 1,test 2,test 3"></div>) 进入 JS 后,我检索了该数据字符串并使用 jQuery 的“split”方法将其转换回数组。为此,请查看此处的 sn-p。

let stillString = $("[data-something]").attr('data-something');
console.log(stillString);

let nowArray = stillString.split(",");
console.log(nowArray);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


<div data-something="test 1,test 2,test 3"></div>

这可能看起来不太漂亮,将数组保留为字符串,但它可以完成工作,您的普通用户不会知道其中的区别。

注意:您不必使用逗号。你真的可以使用任何字符。唯一重要的是,您尝试分隔的所有值都不包含您选择的用于分隔它们的字符。

【讨论】:

【参考方案4】:

要解析它,您需要使用双引号而不是单引号。

这应该可行:

services = '["service1", "service2", "service3"]'
JSON.parse(services)

【讨论】:

它也适用于我。这背后有什么直觉吗?为什么带有“”的那个不起作用? 注意 JSON.parse() 后面的 ` @FatemehRahimi 带有'' 的那个不起作用,因为 JSON 只能识别 "" 的字符串【参考方案5】:

为确保 Django 和一些 javascript 浏览器代码之间的正确解析,请确保在控制器中返回 JsonResponse()。这确保您可以在 Javascript 中使用 JSON.parse() 对其进行解析。

【讨论】:

以上是关于在javascript中将字符串数组转换为数组的主要内容,如果未能解决你的问题,请参考以下文章

在Javascript中将JSON字符串转换为JSON对象数组

在控制浮点数精度的同时在javascript中将数组转换为字符串

JavaScript中将字符串类型转换为整形的函数

如何在 Node.js 中将字符串转换为字节数组?

在Java中将字符串转换为“字符”数组

如何在 JavaScript 中将驼峰式字符串转换为破折号?