循环遍历对象以创建多个字符串值

时间:2017-08-19 19:58:35

标签: javascript

我一直在努力研究如何编写一些逻辑来解决问题,客户希望将整个数据对象传递给单个变量。我已经解决了如何做到这一点,但我是一个非常注意的编码器,因此很难编写代码。

我设法找到了这个代码,它得到了我需要的一半:

for (var prop in mi) {
  if (mi.hasOwnProperty(prop)) { 
     console.log("key: " + prop + " value: " + mi[prop])
  }
}

输出:

key: 076 value: value1
key: 072 value: value2

我正在努力做的是每次循环我想要建立一个单一的变量,这是一系列的','单独的值对的字符串。创建以下输出:

var x = "key: 076 value: value1", "key: 072 value: value2";

我不想把它变成单个字符串,因为我需要将逗号分隔的字符串列表传递给一个变量。

2 个答案:

答案 0 :(得分:0)

您可以将所有内容放入数组中,然后将其加入“,”:

mi = {
  'a': 1,
  'b': 2,
  'c': 3
}
ar = [];
for (var prop in mi) {
  if (mi.hasOwnProperty(prop)) { 
     ar.push("key: " + prop + " value: " + mi[prop])
  }
}
console.log(ar.join(", "));

如果您愿意,可以选择单行:

mi = {
  'a': 1,
  'b': 2,
  'c': 3
}

out = Object.keys(mi).reduce((all, item) => {all.push("key: " + item + " value: " + mi[item]); return all}, []).join(", ");
console.log(out);

答案 1 :(得分:0)

如果要将所有数据保存到变量中,最好的方法是创建一个具有所有必需数据的JSON。

var data1 = ["asdf",1,345,"asdf1qwer56"];
var data2 = "username";
var data3 = 12;
var dataN = new Date();

var allData = {
  someVariables : data1,
  userName : data2,
  someNumber : data3,
  userDate: dataN
}

console.log("accessing all the data",allData);
console.log("accessing a specific data",allData.someVariables);

如果您需要将此数据转换为字符串,您也可以使用 JSON.stringify所以它会将变量转换为字符串,然后您可以使用JSON.parse

将其再次转换为Object