接收一个对象(参数)并返回一个数组
问题描述:
我一直试图接收一个对象作为参数,并将其作为数组返回,但没有运气。我不明白为什么它可能是代码中的任何问题。在这一点上我可能会迷失方向,或者完全脱离逻辑。接收一个对象(参数)并返回一个数组
function att(testobj) {
var q = "";
for(var i = 0; i < testobj.length ; i++){
q += testobj[i] + " ";
}
return q;
}
var obj1= {
Big: 10,
low: 5
};
var attObj1= att(obj1);
console.log(attObj1);
var obj2= {
a: 10,
b: 20,
c: 30
};
var attObj2= att(obj2);
console.log(attObj2);
我曾尝试在代码中做一个for循环在那里检查每个数组的长度,并使用排序q += testobj[i]
,但我没有得到任何结果。只是一个空白控制台日志。
答
您可以迭代键并返回联接值。使用
方法:
-
Object.keys
用于从所述对象获取的所有键, -
Array#join
转换阵列以与给定的字符串作为胶的字符串。
function att(testobj) {
return Object.keys(testobj).join(', ');
}
var obj1= {
Big: 10,
low: 5
};
var attObj1= att(obj1);
console.log(attObj1);
var obj2= {
a: 10,
b: 20,
c: 30
};
var attObj2= att(obj2);
console.log(attObj2);
答
虽然Array
在技术上是一个Object
,一个区别是,它们可以遍历。
因此,举例来说,你可以这样做:
var someArray = ['some', 'value', 'here'];
for (var i = 0; i <= someArray.length; i++) {
console.log(someArray[i]);
}
然而,一个对象,你不能因为它不包含迭代功能。
如果要交替遍历Object
和Array
,则需要考虑使用支持两者的方法。
例如:
function iterateOver(obj) {
for (var k in obj) {
console.log('Key', k, 'Value', obj[k]);
}
}
var someArray = ['some', 'value', 'here'];
var someObject = {
some: 'value',
another: 'great_value'
};
iterateOver(someArray);
iterateOver(someObject);
+0
Ohhhhh好吧!现在我懂了!我会说这是很好的解释。现在我明白了一切!谢谢约瑟夫! :) – WeInThis
谢谢Filburt为编辑:) – WeInThis
'testobj.length':对象没有一个'length'属性就像数组一样。如果你想迭代它们,使用'Object.keys'。 – vlaz
请添加需要的输出。 –