简体   繁体   English

Jquery创建/读取关联数组

[英]Jquery create/read associative array

I have the following data 我有以下数据

var field = fieldA|fieldB|fieldC
var values = 1|2|3

What I need to do is create an array like this: 我需要做的是创建一个这样的数组:

fieldA:1 fieldB:2 fieldC:3

This will be set as a cookie using JSON.stringify and then I will parseJSON to get the values back in to an array. 这将使用JSON.stringify设置为cookie,然后我将parseJSON将值返回到数组中。

I then need to be able to set these read this array back so i can set the fields to their correct values. 然后我需要能够设置这些读取此数组,以便我可以将字段设置为正确的值。

for example fieldA , fieldB and fieldC are all set to 0 on page load, I will read the cookie and set those fields to the values in the array; 例如,在页面加载时, fieldAfieldBfieldC都设置为0 ,我将读取cookie并将这些字段设置为数组中的值;

fieldA = 1
fieldB = 2
fieldC = 3

Here is a code snippet of what I have so far. 这是我到目前为止的代码片段。 Cookie keeps saving as [] Cookie一直保存为[]

EDIT: Need to use Object since some of the values are are non numeric. 编辑:需要使用Object,因为某些值是非数字的。 Changed arrayFinal = []; 更改了arrayFinal = []; to arrayFinal = {}; to 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);
}
<script>
var field = 'fieldA|fieldB|fieldC';
var values = '1|2|3';
var farr = field.split('|');
var varr = values.split('|');
var masterarr = [];
for (i = 0; i < farr.length; i++) {
  masterarr[farr[i]] = varr[i];
}
console.log(masterarr);
</script>

A simple function solve it, try this: 一个简单的函数解决它,试试这个:

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;
}

and call 并打电话

fieldToValue("fieldA|fieldB|fieldC","1|2|3");

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM