具有键值字符串的数组到Object JavaScript中

时间:2017-11-01 16:05:00

标签: javascript arrays object

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

我们正在使用标签管理系统将它们转换为新的分析平台,他们已经能够更新他们的大多数平台,以创建新分析平台可以参考的对象,但是这个网站是可以管理的第三方他们无法及时解决我们的问题。

我设法成功拉出标签并将标签拆分为参数:

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

我现在面临的问题是范围,我希望我的对象可以全局引用,我该怎么做?

2 个答案:

答案 0 :(得分:3)

从您的数组中,使用reduce - 拆分字符串中的=符号,然后创建对象:

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

答案 1 :(得分:0)

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

let myArray = ["109=jsp.searchFlights.initial", "117=Flight Only Journey", "206=02/11/2017", "208=03/11/2017", 
"212=ALL"];

let myObject = {};

myArray.forEach(item=>{
    let tempArr = item.split('=');
    myObject[tempArr[0]] = tempArr[1];
})

console.log(myObject);

产地:

{ "109": "jsp.searchFlights.initial", "117": "Flight Only Journey", "206": "02/11/2017", "208": "03/11/2017", "212": "ALL" }