这里我有两个变量:
var id = '3, 5 ,16,'; //n number if elements
var naziv = 'fieldY, fieldX, fieldQ,'; //same number of strings like number of id
我需要在select2插件中使用这些变量,所以我需要从这些数据中创建一个数组,如下所示:
[{id: "3", title: "fieldY"},{id: "5", title: "fieldX"},{id: "16", title: "fieldQ"}] ...
所以我可以使用这个变量id,naziv进入select2函数:
$("#e6").select2("data", [{id: "3", title: "fieldY"},{id: "5", title: "fieldX"},{id: "16", title: "fieldQ"}]);
那么我如何将id, naziv
转换为我需要的格式呢?
UPDATE:id,naziv musr没有引号,所以没有" id"只是id ...就是问题
答案 0 :(得分:1)
试试这个:http://jsbin.com/ridoqupi/4/edit
var id = '3, 5 ,16,'; //n number if elements
var naziv = 'fieldY, fieldX, fieldQ,';
var g1=id.split(',');
var g2=naziv.split(',');
var g=[];
for (var i=0;i<g1.length;i++)
{
if (g1[i]&&g2[i])
g.push({id:g1[i].trim() , title:g2[i].trim()})
}
console.log(JSON.stringify(g))
//result : [{"id":"3","title":"fieldY"},{"id":" 5 ","title":" fieldX"},{"id":"16","title":" fieldQ"}]
答案 1 :(得分:1)
这应该做的工作:
var s1 = id.split(/,\s*/);
var s2 = naziv.split(/,\s*/);
var result = [];
for (var i = 0; i < s1.length; i++) {
if (s1[i] && s2[i]) result.push({"id":parseInt(s1[i].trim()),"text":s2[i].trim()});
}
$("#parcele1").select2({ data:result });
结果现在将返回所需的结果,无论逗号放在何处,无论每个逗号之前/之后是否有空格。
答案 2 :(得分:1)
我假设id字段有一个类型,应该是var id = '3, 5, 16,'
。
我们可以将字符串转换为.split(', ')
的数组,但是我们需要从末尾删除尾随的逗号。如果我们知道它总是会有一个尾随的逗号,我们可以使用.substr(0, [strvariable].length - 1)
执行此操作,或者我们只需使用[strvariable].lastIndexOf(',') == ([strvariable].length - 1) ? [strvariable].substr(0, [strvariable].length - 1) : [strvariable]
进行检查即可。
这个细分的最终代码最终会像这样结束。
var idArr = (id.lastIndexOf(',') == (id.length - 1) ? id.substr(0, id.length - 1) : id).split(', ');
var nazivArr = (naziv.lastIndexOf(',') == (naziv.length - 1) ? naziv.substr(0, naziv.length - 1) : naziv).split(', ');
所以,现在我们有两个关联数组,我们只需要循环来创建我们的对象。我们将创建一个数组来保存我们的对象并将所有对象填充到那里。
var objHold = [];
for(var i=0,length=idArr.length;i<length;i++)
{
if(idArr[i] && nazivArr[i]) // make sure both arrays have a value
objHold.push({id: idArr[i], title: nazivArr[i]});
}
现在您可以致电$("#e6").select2("data", objHold);
最终代码
var id = '3, 5, 16,'; //n number if elements
var naziv = 'fieldY, fieldX, fieldQ,'; //same number of strings like number of id
var idArr = (id.lastIndexOf(',') == (id.length - 1) ? id.substr(0, id.length - 1) : id).split(', ');
var nazivArr = (naziv.lastIndexOf(',') == (naziv.length - 1) ? naziv.substr(0, naziv.length - 1) : naziv).split(', ');
var objHold = [];
for(var i=0,length=idArr.length;i<length;i++)
{
if(idArr[i] && nazivArr[i]) // make sure both arrays have a value
objHold.push({id: idArr[i], title: nazivArr[i]});
}
$("#e6").select2("data", objHold);