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.
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;
fieldA = 1
fieldB = 2
fieldC = 3
Here is a code snippet of what I have so far. Cookie keeps saving as []
EDIT: Need to use Object since some of the values are are non numeric. Changed 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");
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.