找出对象 obj 不在原型链上的属性(注意这题测试例子的冒号后面也有一个空格~)
1、返回数组,格式为 key: value
2、结果数组不要求顺序
var C = function() {this.foo = 'bar'; this.baz = 'bim';};
C.prototype.bop = 'bip';
iterate(new C());
["foo: bar", "baz: bim"]
var C = function() {this.foo = 'bar'; this.baz = 'bim';};
C.prototype.bop = 'bip';
iterate(new C());["foo: bar", "baz: bim"]
function iterate(obj) {
//方法一:getOwnPropertyNames
return Object.getOwnPropertyNames(obj).map(function (key) {
return key + ": " + obj[key];
});
//方法二for in和hasOwnProperty
var res = [];
for (const key in obj) {
if (Object.hasOwnProperty.call(obj, key)) {
const item = '' + key + ': ' + obj[key];
res.push(item);
}
}
return res;
} function iterate(obj) {
let v = []
for(var i of Object.keys(obj)){
v.push(i+': '+obj[i])
}
return v
} // FED54属性遍历
// 描述
// 找出对象 obj 不在原型链上的属性(注意这题测试例子的冒号后面也有一个空格~)
// 1、返回数组,格式为 key: value
// 2、结果数组不要求顺序
// 示例1
// 输入:
// var C = function() {this.foo = 'bar'; this.baz = 'bim';};
// C.prototype.bop = 'bip';
// iterate(new C());
// 输出:
// ["foo: bar", "baz: bim"]
function iterate(obj) {
// 方法1 遍历obj的属性,用hasOwnProperty属性判断是否仅自己的实例属性
let ret = [];
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
ret.push(key + ": " + obj[key]);
}
}
return ret;
// 方法2 用Object.keys方法,仅遍历自己的实例属性
/*
** Object.keys() 方法
** 会返回一个由一个给定对象的自身可枚举属性组成的数组,
** 数组中属性名的排列顺序和正常循环遍历该对象时返回的顺序一致 。
**
** 语法: Object.keys(obj)
**
** 参数: obj 要返回其枚举自身属性的对象
**
** 返回值: 一个表示给定对象的所有可枚举属性的字符串数组
*/
// let properties = Object.keys(obj);
// let ret = [];
// for (let key in properties) {
// ret.push(properties[key] + ": " + obj[properties[key]]);
// }
// return ret;
}
function iterate(obj) { var arr = []; //使用for-in遍历对象属性 for(var key in obj){ //判断key是否为对象本身的属性 if(obj.hasOwnProperty(key)){ //将属性和值按格式存入数组 arr.push(key+": "+obj[key]); } } return arr; }