添加密钥到哈希

时间:2016-01-25 11:58:01

标签: javascript hash

正如您从我的代码中看到的那样,我尝试将一个密钥添加到哈希page_rank



var page_rank = {};

function create_page_rank_row(step, url, page_rank){
	if(page_rank[step]){

	}else{
		page_rank[step] = { urls: {}};
	}

	page_rank[step].urls[url] = page_rank;
};

create_page_rank_row(0, "d01", 3);
create_page_rank_row(0, "d02", 4);

document.getElementById("result").innerHTML = JSON.stringify(page_rank);

<p id="result">

</p>
&#13;
&#13;
&#13;

但是它没有工作,我得到了错误:

Cannot read property 'urls' of undefined

我错了什么?我该如何解决?谢谢

4 个答案:

答案 0 :(得分:1)

您使用也称为page_rank的参数遮蔽了初始page_rank变量。

当函数运行时page_rank设置为数字。当我们内联你传递的参数的值时,请查看代码。

function create_page_rank_row(step, url, page_rank){
  if(3[step]){

  }else{
    3[step] = { urls: {}};
  }

  3[step].urls[url] = 3;
};

Javascript不允许您在简单的原始值(如数字)上定义新属性。

可能会将外部变量重命名为page_ranks

答案 1 :(得分:0)

您正在使用page_rank参数作为整数调用该函数,并使用数组bracketes访问它。即使你设置了它,它也总是会返回undefined。

var x = 3;
console.log(x[0]); //undefined
x[0] = 'something';
console.log(x[0]); //still undefined

答案 2 :(得分:0)

var page_rank = {};

function create_page_rank_row(step, url, rank) {
  if (!page_rank.hasOwnProperty(step)) {
    page_rank[step] = {
      urls: {}
    };
  }

  page_rank[step].urls[url] = rank;
};

create_page_rank_row(0, "d01", 3);
create_page_rank_row(0, "d02", 4);

console.log(JSON.stringify(page_rank));

改变了什么?函数内部第三个参数的名称已更改&amp; hasOwnProperty添加在函数

答案 3 :(得分:0)

变化

function create_page_rank_row(step, url, page_rank){

function create_page_rank_row(step, url, newrank){

page_rank[step].urls[url] = page_rank;

page_rank[step].urls[url] = newrank;