首页 > 解决方案 > 如何添加到键值对对象(jsx)中的列表

问题描述

如果你有一个键值对

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

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

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

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

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

每次运行时返回一个包含一个子列表和更多子列表的列表,如下所示... [2, [4, [6]]]

拥有 [2,4,6] 更有用的地方

由于它不是“命名”数组,因此不能使用 theconcat或其他有用的操作。

标签: javascriptlistkey-value

解决方案


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

 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);


推荐阅读