通过JavaScript对象数组中的变量访问字段

通过JavaScript对象数组中的变量访问字段,javascript,arrays,node.js,javascript-objects,Javascript,Arrays,Node.js,Javascript Objects,我在尝试访问存储在数组中的对象的各个字段时遇到了一个问题 我有一个非均匀对象数组,我们称之为缓存 put函数允许向数组中添加项 function put(item, value) { cache[item] = value; } 用法示例: var item_abc = { item_a: 'some value', item_b: 'another value' }; put('ITEM_ABC',item_abc); 有问题的函数称为update,它使用新值更新数组中某个项的字段

我在尝试访问存储在数组中的对象的各个字段时遇到了一个问题

我有一个非均匀对象数组,我们称之为缓存

put函数允许向数组中添加项

function put(item, value) {
  cache[item] = value;
}
用法示例:

var item_abc = { item_a: 'some value', item_b: 'another value' };

put('ITEM_ABC',item_abc);
有问题的函数称为update,它使用新值更新数组中某个项的字段

下面是麻烦代码:

update('ITEM_ABC','item_a','a new value');
在浏览器中,这似乎工作正常,但在“-use_strict”Node.js环境中,它会遇到问题。我假设这与优先级以及多维数组相对于对象字段的求值方式有关

当对象本身存在于数组中时,如何在运行时引用对象字段而不知道字段名

从相关字段读取总是返回未定义

运行:

check('ITEM_ABC','item_a');
产出:

undefined
'field undefined'

我建议使用简化的
get
put
函数。如果您想实现专门的
更新
,它应该利用
get
put

const缓存=
{}
const get=(键)=>
缓存[键]
常量put=(键,值)=>
缓存[键]=值
常量更新=(键、字段、值)=>
放(钥匙)
,{…获取(键)|{},[字段]:值}
)
put('foo',{a:1})
console.log(get('foo'))/{a:1}
更新('foo','a',2)

console.log(get('foo'))/{a:2}
您能告诉我们在使用
use strict
时遇到的错误吗?我在这个问题中没有看到任何JSON。JSON是一种数据序列化格式。听起来你在谈论JavaScript对象。没有错误,但是
typeof cache[item][field]
总是
undefined
var cache={}开始(JavaScript没有关联数组。)如果使用严格模式,就不能有名为package的变量。
function check(item, field) {
  console.log(cache[item][field]);
  if (typeof cache[item][field] !== 'undefined')
    console.log('field exists');
  else
    console.log('field undefined');
}
check('ITEM_ABC','item_a');
undefined
'field undefined'