将带有键值字符串的数组转换为对象JavaScript

将带有键值字符串的数组转换为对象JavaScript,javascript,arrays,object,Javascript,Arrays,Object,我正在寻找一些帮助,我正在为一个客户端编写一段代码,该客户端当前已将其分析标签硬编码到页面,并发送所有键值 我们正在使用标签管理系统将其转换为新的分析平台,他们已经能够更新其大多数平台,以创建新的分析平台可以引用的对象,但由于该网站由第三方管理,他们无法在发布前及时解决此问题 我已成功拉取标记并将标记拆分为参数: var x = $('img[alt="MI_TAG"]').attr("src"); x.split("&"); 这将创建阵列: 1:"109=jsp.searchFlig

我正在寻找一些帮助,我正在为一个客户端编写一段代码,该客户端当前已将其分析标签硬编码到页面,并发送所有键值

我们正在使用标签管理系统将其转换为新的分析平台,他们已经能够更新其大多数平台,以创建新的分析平台可以引用的对象,但由于该网站由第三方管理,他们无法在发布前及时解决此问题

我已成功拉取标记并将标记拆分为参数:

var x = $('img[alt="MI_TAG"]').attr("src");
x.split("&");
这将创建阵列:

1:"109=jsp.searchFlights.initial"
2:"117=Flight Only Journey"
3:"206=02/11/2017"
4:"208=03/11/2017"
5:"212=ALL"
我要做的是使用这些数组字符串创建一个对象调用“mi”,如下所示:

109:"jsp.searchFlights.initial"
117:"Flight Only Journey"
204:""
205:""
206:"02/11/2017"
208:"03/11/2017"
有人能帮忙吗? 感谢大家的帮助,我已经设法采纳了这里的一些建议,创建了对象并看到它注销:

var x = $('img[alt="MI_TAG"]').attr("src");
var split = x.split("&");
var arrayLength = split.length;
var arr = [];
var i = 0;
do {
  arr.push(split[i].replace('=',':'));
  arr.toString();
  console.log(arr);
  i += 1;
} while (i < arrayLength);

let mi = {};

arr.forEach(item=>{
    let tempArr = item.split(':');
    mi[tempArr[0]] = tempArr[1];
})

console.log(mi);
var x=$('img[alt=“MI_TAG”]”)attr(“src”); var分割=x分割(&); var arrayLength=拆分长度; var-arr=[]; var i=0; 做{ arr.push(拆分[i]。替换('=',':'); arr.toString(); 控制台日志(arr); i+=1; }而(i<排列长度); 设mi={}; arr.forEach(项目=>{ 让tempArr=item.split(':'); mi[tempArr[0]]=tempArr[1]; }) 控制台日志(mi);
我现在似乎面临的问题是范围,我希望我的对象是全局可引用的,我如何做到这一点

从数组中,在字符串中的
=
符号上使用
reduce
-split,然后创建对象:

let newObject = arr.reduce((obj, item) => {
    let parts = item.split("=");
    obj[parts[0]] = parts[1];
    return obj;
}, {});

假设您至少使用ECMAScript 5.1,您可以使用
Array.prototype.forEach()
在数组上迭代并生成对象

让myArray=[“109=jsp.searchFlights.initial”,“117=flights Only旅程”,“206=02/11/2017”,“208=03/11/2017”,
“212=全部”];
设myObject={};
myArray.forEach(项=>{
让tempArr=item.split('=');
myObject[tempArr[0]]=tempArr[1];
})

console.log(myObject)这只是一个
for
循环。为什么要麻烦使用
obj
reduce
?OP我建议您对该拆分设置一个限制,否则如果出现另一个=,数组中的值将超过2个。我的意思是:
让newObject={};对于(arr的let项){let parts=item.split(=”);newObject[parts[0]]=parts[1];}
@melpomene-yesp-没有真正的原因。我喜欢在可能的时候使用
reduce
。@tymeJV为什么不使用
filter
<代码>让obj={};arr.filter(item=>{let parts=item.split(“=”);obj[parts[0]]=parts[1];return obj;})
?204/5来自哪里?像这样将它们添加到输出中似乎是随机的。嗨,安迪,我从另一个页面复制了一个对象来使用插图,如果这让人困惑的话,很抱歉。