将多级对象值转换为字符串javascript

时间:2016-10-05 05:06:09

标签: javascript arrays object foreach

我有以下对象

var myObject = {
    first:{
        key1:'value1',
        key2:'value2',
        key3:'value3',
        key4:'value4',
    },
    second:{
        key1:'value1',
        key2:'value2',
        key3:'value3',

    },
    third:{
        key1:'value1',
        key2:'value2',
        key3:'value3',
        key4:'value4',
        key5:'value5',
    }
}

正如您所看到的,值(value1,value2,value3,...)在单引号中,但实际上这不是字符串值,它可以具有数字值。我的目标是使用循环将此值(value1,value2,value3,...)转换为字符串。我已经尝试了forEach loop,但它确实无效。你有什么想法???

- 编辑 -

我的一些对象再次有这样的孩子

var myObject = {
    first:{
        key1:'value1',
        key2:'value2',
        key3:'value3',
        key4:'value4',
    },
    second:{
        child1:{
             key1:'value1',
             key2:'value2',
             key3:'value3',
             key4:'value4',
        },
        child2:{
             key1:'value1',
             key2:'value2',
             key3:'value3',
             key4:'value4',
        }

    },
    third:{
        key1:'value1',
        key2:'value2',
        key3:'value3',
        key4:'value4',
        key5:'value5',
    }
}

我想将它们转换为字符串。我应该做些什么改变?

在Angular js中,我这样做

angular.forEach(abc, function(value, key){
        angular.forEach(abc[key], function(v, k){
            if(typeof abc[key][k]==='object'){
                angular.forEach(abc[key][k], function(v1, k1) {
                    abc[key][k][k1] = String(abc[key][k][k1]);
                }); 
            }else{
                abc[key][k] = String(abc[key][k]);
            }
      });
  });

但是在纯Javascript中我怎么能实现这个目标?

3 个答案:

答案 0 :(得分:1)

您可以使用Object.keysArray#forEach方法。

// get all object property names and iterate over them
Object.keys(myObject).forEach(function(key) {
  // get property names of inner object and iterate over them
  Object.keys(myObject[key]).forEach(function(key1) {
    // update the property value with stringified value(using String constructor)
    myObject[key][key1] = String(myObject[key][key1]);
  });
});

var myObject = {
  first: {
    key1: 'value1',
    key2: 'value2',
    key3: 'value3',
    key4: 4,
  },
  second: {
    key1: 'value1',
    key2: 'value2',
    key3: 'value3',

  },
  third: {
    key1: 'value1',
    key2: 'value2',
    key3: 'value3',
    key4: 'value4',
    key5: 'value5',
  }
};

Object.keys(myObject).forEach(function(key) {
  Object.keys(myObject[key]).forEach(function(key1) {
    myObject[key][key1] = String(myObject[key][key1]);
  });
});

console.log(myObject);

答案 1 :(得分:1)

如果正确解释问题,您可以使用for..in循环,String()构造函数

var myObject = {
    first:{
        key1:1,
        key2:2,
        key3:3,
        key4:4
    },
    second:{
        key1:1,
        key2:2,
        key3:3

    },
    third:{
        key1:1,
        key2:2,
        key3:3,
        key4:4,
        key5:5
    }
}

for (var prop in myObject) {
  for (var key in myObject[prop]) {
    myObject[prop][key] = String(myObject[prop][key])
  }
}
  
console.log(myObject)

答案 2 :(得分:0)

使用像这样的对象中的for var键来执行此操作。

var myObject = {
    first:{
        key1:'value1',
        key2:'value2',
        key3:'value3',
        key4:'value4',
    },
    second:{
        key1:'value1',
        key2:'value2',
        key3:'value3',

    },
    third:{
        key1:'value1',
        key2:'value2',
        key3:'value3',
        key4:'value4',
        key5:'value5',
        key6: 1555
    }
}

for(var key in myObject) {
  for(var anotherkey in myObject[key]) {
    myObject[key][anotherkey] = String(myObject[key][anotherkey])
  }
}

console.log(myObject);

我还建议您为对象使用数组。这正是数组的用途,是一个有序的元素序列。不要对这种类型的结构使用键值对。