在javascript中需要有关字符串对象操作的帮助

时间:2015-07-04 12:04:54

标签: javascript object

我从表格数据

收到这种形式的对象
{
  no_of_sections: “2”,
  0: “10,20,20”,
  1: “10,10”
}

我需要将其转换为以下格式

{
  no_of_sections: “2”,
  marks_per_main: “10,20,20|10,10”
}

对象的架构保持不变。 例如。如果no_of_sections: "3"那么

{
  no_of_sections: “3”,
  0: “12,10,24”,
  1: “10,15”,
  2: "20,20,10,5"
}

逗号分隔值的值可以是任何值。

我能实现这一目标的最有效方法是什么?

如果有帮助,我确实包含了lodash。

4 个答案:

答案 0 :(得分:0)

var newObj = {}

newObj.no_of_sections = oldObj.no_of_sections
newObj.marks_per_main = oldObj[0] + '|' + oldObj[1]

如果'oldObj'始终采用相同的格式,那么应该这样做。

答案 1 :(得分:0)

function doit(obj) {
  var t = [];
  var retobj = {no_of_sections: obj.no_of_sections};
  for (var i=0; i < parseInt(obj.no_of_sections); i += 1) {
    t.push(obj[i]);
  }
  retobj.marks_per_main = t.join('|');
  return retobj;
}

我认为应该这样做 - 或者在不创建新对象的情况下更改对象

function doit(obj) {
  var t = [];
  for (var i=0; i < parseInt(obj.no_of_sections); i += 1) {
    t.push(obj[i]);
    delete obj[i];
  }
  obj.marks_per_main = t.join('|');
}

答案 2 :(得分:0)

基于MeltingPoint的回答:

var newObj = {}
var sections = [];

newObj.no_of_sections = oldObj.no_of_sections

for(i=0;i<parseInt(oldObj.no_of_sections);i++) {
   sections.push(oldObj[i]);
}
newObj.marks_per_main = sections.join('|');

答案 3 :(得分:-1)

请执行代码

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Demo</title>
<script>
    window.onload = function () {
        var jsonObj = {
            no_of_sections: "2",
            0: "10,20,20",
            1: "10,10"
        };
        document.getElementById("old").textContent = JSON.stringify(jsonObj);
        jsonObj.marks_per_main = jsonObj[0] + '|' + jsonObj[1];
        delete jsonObj[0];
        delete jsonObj[1];
        document.getElementById("new").textContent = JSON.stringify(jsonObj);
    }
</script>
</head>
<body>
<pre id="old"></pre>
<pre id="new"></pre>
</body>
</html>