javascript - 面向对象的 Javascript 在嵌入式数组中创建格式错误的数据

标签 javascript arrays object

<分区>

我正在使用这段有效的代码,但我最终得到的数据看起来像 ["\"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"

关于javascript - 面向对象的 Javascript 在嵌入式数组中创建格式错误的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59587197/

相关文章:

javascript - 我应该如何从我的 javascript 中引用 DOM 元素?

javascript - 写入文件只写入最后一项,而不是所有项目,为什么?

javascript - 组合模块的 Angular JS 示例

javascript - 简单的 jquery .post 不返回数据

javascript - 期望返回箭头中的值;函数数组回调返回。为什么?

javascript - 在 Meteor 的测验应用程序中显示提示

javascript - 如何拖放数组

javascript - 替换另一个变量中所述的属性名称

javascript - 如何将 JSON 键转换为值

python - isinstance(type, object) = True,为什么?