javascript - 面向对象的 Javascript 在嵌入式数组中创建格式错误的数据
问题描述
我正在使用这段代码,它可以工作,但我最终得到的数据看起来像下面示例对象中的数组["\"colour"\", "\"colour"\", "\"colour"\"]
内部。"colours_available":[]
// Array holding object data
var arr = [];
// Example of object in array
{
"id": 101,
"name": "Scott",
"colours_available: ["red", "blue", "black"],
"key_group": 1
}
// Target id to check
var x = 101;
// Current colour in loop
var colour = "silver";
// Get index of target (Search array for matching object)
objIndex = arr.findIndex((obj => obj.id == x));
// Check if data exists (A)
var z = arr[objIndex].colours_available.includes('"' + colour + '"');
// If data does not exist insert data (B)
if (z == false) {
arr[objIndex].colours_available.push('"' + colour + '"');
}
我最初尝试将这些数据发布到对象数组中,而不用 (A) 和 (B) 中的引号括起来和连接,但这只是在我的示例中创建了许多数组,"colours_available":[]
就像["colour"],["colour"],["colour"]
上面的示例一样。
如何使我的数据导入看起来更像["colour","colour","colour"]
是让我感到困惑,因为它在 jsfiddle 的示例中使用字符串但不适用于我的数据,这些数据只是转换为 JSON 的 xml 数据,为什么当我从 ( A) 和 (B) ?
解决方案
既然你说如果你删除引号你最终会得到嵌套数组,我怀疑colour
它实际上是一个数组而不是一个字符串。我建议你console.log(colour)
在循环里面。
复制品:
const colour = ['Silver']
let colours = []
// No quotes
colours.push(colour)
console.log(colours) // -> [["Silver"]]
// With quotes
colours = []
colours.push('"' + colour + '"')
console.log(colours) // -> ["\"Silver\""]
// Correct (assuming colour is an array with one item):
colours = []
colours.push(colour[0])
console.log(colours) // -> ["Silver"]
// Calling Array.prototype.toString() explicitly:
console.log(colour.toString()) // -> "Silver"
// Concatenated with other text:
console.log("The colour is: " + colour) // -> "The colour is Silver"
// Straight up console.logging the array:
console.log(colour) // -> ["Silver"]
原因'"' + ["Silver"] + '"'
就变成"\"Silver\""
了,当您将字符串与数组连接时,数组会通过该Array.prototype.toString()
方法静默转换为字符串。["Silver"].toString()
例如,返回"Silver"
。
推荐阅读
- android - 得到空响应,但 okhttp 显示数据
- python - 如何在我的 Discord Bot 上制作语言包?
- excel - excel中过滤的参考列表
- c# - 为什么在 LINQ 中 Where 子句在 GroupBy 之后执行?
- mysql - 当一个预订中有多个类别时,在两个日期之间无法获得可用房间
- glib - 代理处理程序上的 g_signal_connect 导致回调 GVariant * 数据未初始化
- javascript - 使用 PDF.JS 检索 PDF 的页数失败并返回
- c# - 如果 QueryContainer 为空,则使用不返回值的嵌套进行 ElasticSearch 搜索
- ios - 如何将文件文件夹从 IOS App bundle 资源复制到 Documents Directory
- python - Pandas Groupby Multiple Columns - Top N