Javascript 如何转换对象关键帧&;将值转换为格式化字符串?
我需要将“键”作为一个字符串,然后将它们的值作为另一个字符串 这是我写这个循环的失败尝试,它只在一个层面上有效Javascript 如何转换对象关键帧&;将值转换为格式化字符串?,javascript,jquery,arrays,object,multidimensional-array,Javascript,Jquery,Arrays,Object,Multidimensional Array,我需要将“键”作为一个字符串,然后将它们的值作为另一个字符串 这是我写这个循环的失败尝试,它只在一个层面上有效 function convertToString(objArray) { var str = ''; for (var i = 0; i < objArray.length; i++) { var line = ''; for (var index in objArray[i]) { if (line !=
function convertToString(objArray) {
var str = '';
for (var i = 0; i < objArray.length; i++) {
var line = '';
for (var index in objArray[i]) {
if (line != '') line += ','
line += objArray[i][index];
}
str += line + '\r\n';
}
return str;
}
我希望键的输出为:
"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l"
它们各自的值字符串如下所示:
"a", object, "c", "d", "e", "f", true, object, "i", "j", 1, "l"
如果有人能把我引向正确的方向,那就太好了,我不希望有人能为我写代码,但能让我开始的东西就太好了
这样做的目的是,我可以将响应对象转换为一种格式,用于下载相同数据的CSV文件。好的,您的输出显示的是值,而不是对象的键 您只需使用underline.js库获取所有键即可。这是仅适用于顶层的示例:
_.keys(obj);
// output : [ "a","b","g","h","l" ];
医生:试试看
var obj = {
"a": "a",
"b": [{
"c": "c",
"d": "d"
}, {
"e": "e",
"f": "f"
}],
"g": true,
"h": {
"i": "i",
"j": "j",
"k": 1
},
"l": "l"
};
function x(obj, keys, vals) {
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
var val = obj[key];
keys.push(key);
vals.push(val);
if (typeof val == 'object') {
//borrowed from angularjs isArray
//http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.js
if (toString.apply(val) == '[object Array]') {
for (var i = 0; i < val.length; i++) {
x(val[i], keys, vals)
}
} else {
x(val, keys, vals)
}
}
}
}
}
var keys = [],
vals = [];
x(obj, keys, vals);
console.log(keys)
console.log(vals)
var obj={
“a”:“a”,
“b”:[{
“c”:“c”,
“d”:“d”
}, {
“e”:“e”,
“f”:“f”
}],
“g”:是的,
“h”:{
“我”:“我”,
“j”:“j”,
“k”:1
},
“l”:“l”
};
功能x(obj、钥匙、VAL){
for(obj中的var键){
if(对象hasOwnProperty(键)){
var val=对象[键];
按键。按(键);
推力(val);
if(typeof val=='object'){
//从angularjs isArray那里借来的
//http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.js
if(toString.apply(val)='[object Array]'){
对于(变量i=0;i
演示:您可以在javascript中使用递归for..,如下所示:
“那么你想拆毁这座建筑吗?@EvanKnowles在某种意义上说是的!这样做有什么意义?我想将这些数据发送到csv,基本上我需要将我的响应转换为可读格式,以下载包含相同信息的csv@未定义此问题已关闭,因为您没有亲自尝试解决它,关闭原因包括“要求代码的问题必须证明对正在解决的问题的最低理解。包括尝试的解决方案、为什么不起作用以及预期结果。”很遗憾,在投票结束的时候,没有人愿意发表评论,但你就这样做了。如果你能尝试至少展示一些你自己的方法,这可能会有很大帮助。谢谢,但我在我的示例中确实说明了我需要所有级别我只是给了前进的方式我需要键和值,而不仅仅是一个,无论如何,谢谢。你是一个传奇人物。这正是我想要的!这实际上似乎与我的大比例示例有点不符,请注意ID与第三个键不匹配,出于某种原因,第三个键上也有一个对象,你知道为什么吗?@ShannonHochkins我觉得很好。。。文本表示看起来像是个问题,因为结果是数组。。当将其转换为字符串格式时,它将打印为“Object,Object”,请参见我的示例,键的vs值没有正确对齐。我将此项标记为正确,您已经完全实现了我的目标,只需很少的代码,甚至格式化了字符串。非常感谢。以下是你在我的主要目标上的出色工作:)看起来很棒,干杯!
var obj = {
"a": "a",
"b": [{
"c": "c",
"d": "d"
}, {
"e": "e",
"f": "f"
}],
"g": true,
"h": {
"i": "i",
"j": "j",
"k": 1
},
"l": "l"
};
function x(obj, keys, vals) {
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
var val = obj[key];
keys.push(key);
vals.push(val);
if (typeof val == 'object') {
//borrowed from angularjs isArray
//http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.js
if (toString.apply(val) == '[object Array]') {
for (var i = 0; i < val.length; i++) {
x(val[i], keys, vals)
}
} else {
x(val, keys, vals)
}
}
}
}
}
var keys = [],
vals = [];
x(obj, keys, vals);
console.log(keys)
console.log(vals)
var obj = {
"a": "a",
"b": [{
"c": "c",
"d": "d"
}, {
"e": "e",
"f": "f"
}],
"g": true,
"h": {
"i": "i",
"j": "j",
"k": 1
},
"l": "l"
};
function inspect(o, props){
var kk = [];
for(var p in o) {
if(o.hasOwnProperty(p)) {
if(typeof o[p] == 'object')
kk = kk.concat(inspect(o[p], props));
else {
var m = (props) ? o[p] : p;
kk.push(m);
}
}
}
return kk;
}
var s = inspect(obj,false);
alert(s.join(','));
s = inspect(obj,true);
alert(s.join(','));