如何动态访问键值对是JS/React

How to access a key value pair dynamically is JS/React

我有一个电子表格元素,它的单元格值存储在一个对象中,如下所示:

localCells = {A1: {input: 'hi', value: 'world'}, A2: {input:'how', value:'you?'}}

像这样很长:

localCells = {A1: {…}, B1: {…}, C1: {…}, D1: {…}, A2: {…}, …}

我有一个存储当前选定单元格的数组,如下所示:

selected = ["A1", "B3"]

当我执行一个函数时,我想从上面的数组中获取每个单元格的值

我试过这个:

         for (let i = 0; i < selected.length; i++) {
          console.log(localCells.selected[i])
        }

这是我的错误:

Uncaught TypeError: Cannot read property '0' of undefined

谢谢

您只能使用 [] 表示法将变量用作对象键。所以应该是:

for (let cellId of selected) {
    console.log(localCells[cellId])
}

您可以使用此代码:

let localCells = {A1: {input: 'hi', value: 'world'}, A2: {input:'how', value:'you?'}};
let selected = ["A1", "B3"];
for (let i = 0; i < selected.length; i++) {
    if (localCells[selected[i]])
        console.log(localCells[selected[i]]);
}

您混淆了圆点符号和括号符号的工作原理。当您执行 localCells.selected[i] 要使该行代码正常工作时,您的对象将是:

localCells = {
  selected: [0,1,2,3]
}

并不是你想的那样localCells.a1

这里不能用点号,需要用括号。将其分解以提高可读性

var key = selected[i]
var cell = localCells[key];
console.log(cell);

一行

var cell = localCells[selected[i]];

示例运行:

var localCells = {
  A1: {
    input: 'hi',
    value: 'world'
  },
  B3: {
    input: 'how',
    value: 'you?'
  }
}
var selected = ["A1", "B3"]

for (var i = 0; i < selected.length; i++) {
  var key = selected[i];
  var cell = localCells[key];
  console.log(cell);

  var cell2 = localCells[selected[i]];
  console.log(cell2);
}

//using forEach
selected.forEach(function(key) {
  console.log(localCells[key]);
});

const selectedObjects = selected.map(function(key) {
  return localCells[key];
});
console.log(selectedObjects);