如何获取jquery中某个特定字符内的所有数据



我有一些用逗号分隔的字符串。我需要在数组中获得这些值。这是我能做到的。为了得到这个,我已经做到了。

var productArray = $("#service").data('product').split(',');

并且这些数据在productArray变量中正确地显示出来。这些数据格式是这样的。

["[44]Medicine 2", "[63]Test Sam "]

现在我需要得到这个字符[]里面的数字。例如,我需要根据上面给出的数据得到4463。我没有为这部分做任何事情,因为我没有任何办法。

您可以使用array.map转换现有数组。

下面是一个在[]上使用.split分解为多个部分的示例。另一个可行的解决方案是使用正则表达式。

// from #service.data()
var data = "[44]Medicine 2,[63]Test Sam";
var array = data.split(",");
var ids = array.map(s => s.split("]")[0].split("[")[1]);
console.log(ids)
var id_name = array.map((s) => {
return { id : s.split("]")[0].split("[")[1], name : s.split("]")[1] };
});
console.log(id_name)


另一种选择是,如果你可以更改data-属性的生成方式,你可以直接在html中存储(有效)json,那么jquery的.data()会给你一个对象,所以不需要额外的解析:

var data = $("#data").data("data");
console.log(data.length, data[0].id, data[0].name);
console.log(data);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id='data' data-data='[{"id":"1","name":"test"},{"id":"2","name":"2nd"}]'></div>

尝试使用正则表达式:

//instead of splitting the string:
console.log("[44]Medicine 2,[63]Test Sam ".match(/(?<=[)d+(?=])/g));

您可以使用RegEx:/[(.*)]/

let res = ["[44]Medicine 2", "[63]Test Sam "].map(e => Number(e.match(/[(.*)]/).pop()));
console.log(res);

或者作为代码的一步解决方案:

var productArray = $("#service")
.data('product')
.split(',')
.map(e => Number(e.match(/[(.*)]/).pop()));

注意:我还隐式地向Number广播。

相关内容

  • 没有找到相关文章

最新更新