如何添加到键值对对象(jsx)中的列表

How to add to a list in key value pair object (jsx)

如果你有键值对

 let appleLocations = [{
   "red": [],
   "blue": [],
   "green": []
  }
 ]

并且您找到它们所在的位置(简单的数字标识符),并希望 key/value 最终(完成搜索后,每次向列表中添加 1 个数字标识符)就像这个:

 appleLocations = [
   "red": [2,4,6],
   "blue": [3,7,9,8],
   "green": [0,5]
 ]

问题变成了 - 如何在不首先引用它们的情况下向最初空白和随后填充的数组添加内容。

appleLocations["red"] = [appleLocations["red"], newLocationNumber]

returns 一个带有子列表和更多子列表的列表,每次它是 运行,像这样... [2, [4, [6]]]

在哪里更有用 [2,4,6]

因为它不是“命名”数组,所以不能使用 concat 或其他有用的操作。

你可以对数组使用 flat() 函数

你在这里基本上有两个选择。保留原始语法并访问数组中的单个元素以获取要更改的属性:

 let appleLocations = [{
   "red": [],
   "blue": [],
   "green": []
  }
 ];
 
 appleLocations[0].red = appleLocations[0].red.concat(2);
 console.log(appleLocations[0].red);
 console.log(appleLocations);

或者,将您的第二种语法修改为对象的正确语法,然后像往常一样访问属性。我在这里使用扩展语法只是为了说明还有其他方法可以将元素添加到数组中:

let appleLocations = {
   "red": [2,4,6],
   "blue": [3,7,9,8],
   "green": [0,5]
};

// A different syntax just to show what's possible
appleLocations = {
  ...appleLocations,
  red: [...appleLocations.red, 10],
};

console.log(appleLocations.red);
console.log(appleLocations);