Javascript 调用方法不适用于 Array forEach

问题描述 投票:0回答:4
var obj = {
    0: 'Asad',
    1: 'Ali',
    2: 'Rizwan'
}
console.log(obj);
let FOREAC = Array.prototype.forEach;

FOREAC.apply(obj , ((item) => {

    console.log('ITEM LOGS');

    console.log(item);

    return true;
}))

上面是我用来迭代我的对象的代码

obj
。它不显示任何输出。 提前致谢

我正在尝试迭代我的对象

obj
。但是我的代码没有显示任何输出

javascript arrays apply call
4个回答
1
投票

一个简单的

for..in
循环怎么样。这就是它的用途。

var obj = {
  0: 'Asad',
  1: 'Ali',
  2: 'Rizwan'
}
console.log(obj);

for (const key in obj) {
  console.log('item', key, obj[key]);
}


0
投票

您可以使用 Object.entries 遍历对象中的所有对。

var obj = {
   0: 'Asad',
   1: 'Ali',
   2: 'Rizwan'
}

for (const [key, value] of Object.entries(obj)) {
   console.log(`${key}: ${value}`);
}

编辑:但是,由于您的对象在关键位置(仅索引)不包含任何信息,您还可以使用 Object.values 从对象值生成数组:

var obj = {
   0: 'Asad',
   1: 'Ali',
   2: 'Rizwan'
}

console.log(Object.values(obj)

0
投票

您可以将具有索引(如键)的对象转换为数组并使用它。

const
    object = { 0: 'Jo', 1: 'Ali', 2: 'Jane' },
    array = Object.assign([], object);
    
array.forEach(v => console.log(v));


0
投票

Array#forEach()
这样的数组方法是有意通用的,不仅可以用于数组,还可以用于任何 array-like object。简而言之,类数组具有索引作为键1
length
属性2.

以下对象有索引但没有

length
属性:

var obj = {
  0: 'Asad',
  1: 'Ali',
  2: 'Rizwan'
}

一旦

length
被添加
Array#forEach
可以使用
Function#call()
来对抗它:

var obj = {
    0: 'Asad',
    1: 'Ali',
    2: 'Rizwan',
    length: 3
}

let FOREAC = Array.prototype.forEach;

FOREAC.call(obj, (item) => {
    console.log('ITEM LOGS');
    console.log(item);

    return true;
});
.as-console-wrapper { max-height: 100% !important; }

Function#apply()

var obj = {
    0: 'Asad',
    1: 'Ali',
    2: 'Rizwan',
    length: 3
}

let FOREAC = Array.prototype.forEach;

FOREAC.apply(obj, [(item) => {
    console.log('ITEM LOGS');
    console.log(item);

    return true;
}]);
.as-console-wrapper { max-height: 100% !important; }


1 非负整数
2 也是一个非负整数。它应该显示下一个可用索引。

© www.soinside.com 2019 - 2024. All rights reserved.