我有以下对象
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中我怎么能实现这个目标?
答案 0 :(得分:1)
您可以使用Object.keys
和Array#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);
我还建议您为对象使用数组。这正是数组的用途,是一个有序的元素序列。不要对这种类型的结构使用键值对。