Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.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 Jquery创建/读取关联数组_Javascript_Jquery_Arrays - Fatal编程技术网

Javascript Jquery创建/读取关联数组

Javascript Jquery创建/读取关联数组,javascript,jquery,arrays,Javascript,Jquery,Arrays,我有以下数据 var field = fieldA|fieldB|fieldC var values = 1|2|3 我需要做的是创建如下数组: fieldA:1 fieldB:2 fieldC:3 这将使用JSON.stringify设置为cookie,然后我将parseJSON将值返回到数组中 然后,我需要能够将这些字段设置回读取此数组,以便将字段设置为正确的值 例如fieldA,fieldB和fieldC在页面加载时都设置为0,我将读取cookie并将这些字段设置为数组中的值 fiel

我有以下数据

var field = fieldA|fieldB|fieldC
var values = 1|2|3
我需要做的是创建如下数组:

fieldA:1 fieldB:2 fieldC:3
这将使用
JSON.stringify
设置为cookie,然后我将
parseJSON
将值返回到数组中

然后,我需要能够将这些字段设置回读取此数组,以便将字段设置为正确的值

例如
fieldA
fieldB
fieldC
在页面加载时都设置为
0
,我将读取cookie并将这些字段设置为数组中的值

fieldA = 1
fieldB = 2
fieldC = 3
这里是我到目前为止的代码片段。Cookie一直保存为[]

编辑:需要使用对象,因为某些值是非数字的。更改的数组最终=[];到arrayFinal={}

Cookies.set("fields", JSON.stringify(builSearchString()));


function builSearchString() {
var fields = $('#advanced input').map(function () {
    return this.id;
}).get().join('|');
var values = $('#advanced input[type=text]').map(function () {
    return this.value;
}).get().join('|');
var array = fieldToValue(fields, values);
return array;


function fieldToValue(fields, values) {
var fieldArr = fields.split('|'),
    valueArr = values.split('|'),
    arrayFinal = [];
for (i = 0; i < fieldArr.length; i++)
    if (fieldArr[i] && valueArr[i])//validation
        arrayFinal[fieldArr[i]] = valueArr[i];
return arrayFinal;
}

 function getAdvancedSearchQuery() {
var cookie = Cookies.get("fields")
var array = $.parseJSON(cookie);
}
Cookies.set(“字段”,JSON.stringify(builSearchString());
函数builSearchString(){
变量字段=$(“#高级输入”).map(函数(){
返回此.id;
}).get().join(“|”);
var values=$('#高级输入[type=text]').map(函数(){
返回此.value;
}).get().join(“|”);
var数组=fieldToValue(字段、值);
返回数组;
函数fieldToValue(字段、值){
var fieldArr=fields.split(“|”),
valueArr=values.split(“|”),
arrayFinal=[];
对于(i=0;i

变量字段='fieldA | fieldB | fieldC';
var值='1 | 2 | 3';
var farr=field.split(“|”);
var varr=values.split(“|”);
var masterarr=[];
对于(i=0;i
一个简单的函数要解决它,请尝试以下方法:

function fieldToValue(fields,values){
    var fieldArr = fields.split('|'),
        valueArr = values.split('|'),
        arrayFinal = [];
    for (i = 0; i < fieldArr.length; i++)
        if(fieldArr[i] && valueArr[i])//validation
            arrayFinal[fieldArr[i]] = valueArr[i];
    return arrayFinal;
}

你是故意使用位OR吗?我想它只是作为一个字段分隔符…:)制作一个对象怎么样:
{“fieldA”:1,“fieldB”:2,“fieldC”:3}
?Spencer你是对的,必须使用一个对象,这样它才能正确地成为JSON.stringify。我将arrayFinal=[];改为arrayFinal={}现在一切都正常工作了。感谢这个链接的解释,好吧,我有点接近了,但现在当我尝试将其设置为cookie时,它将其设置为[](空数组)而不是JSON.stringify。有什么想法吗?创建格式字符串(JSON.stringify),当您按下并打开对象(JSON.parse)时。cookie只存储字符串。
fieldToValue("fieldA|fieldB|fieldC","1|2|3");