TypeError,无法读取未定义的属性0

时间:2019-09-24 15:46:31

标签: javascript

我正在尝试将数组中的所有值返回给对象,并且对象中每个键的值将基于它们在数组中出现的次数。 当我尝试运行它时,出现错误消息“ TypeError:无法读取未定义的属性'0'” 错误消息上方也将其写入 if (result.arr[i] === undefined) {

  let result = {}
  let arr = [0, 4, 4, 5, 6, 2, 1]
  for (let i = 0; i < arr.length; i++) {
    if (result.arr[i] === undefined) {
      result.arr[i] = arr[i]
    } else {
      result.arr[i] ++
    }
  }

2 个答案:

答案 0 :(得分:1)

定义对象时,需要为arr对象分配result属性:

let result = { arr: [ ] },
    arr = [0, 4, 4, 5, 6, 2, 1];
    
for( let i = 0; i < arr.length; i++ ) 
{
  if( ! result.arr[i] ) 
  {
    result.arr[i] = arr[i]
  } 
  else 
  {
    result.arr[i]++;
  }
}

console.log(result);

答案 1 :(得分:-1)

您要尝试的是访问对象结果上称为“ arr”的属性。该属性不存在,因此会出现未定义的错误。

尝试以下方法:

let result = {}
let arr = [0, 4, 4, 5, 6, 2, 1]
for (let i = 0; i < arr.length; i++) {
  if (result[arr[i]] === undefined) {
    result[arr[i]] = 1
  } else {
    result[arr[i]] ++
  }
}