【问题标题】:JavaScript Object Array Not Pushing ProperlyJavaScript 对象数组未正确推送
【发布时间】:2013-12-02 10:56:06
【问题描述】:

我有一个包含 120 个对象的数组 (oldArray)。 我想创建另一个数组(newArray),其第一个元素是 oldArray 的第一个元素。 看起来很简单,只是我的输出不如预期。

var obj = oldArray[0];
newArray[0] = obj;
console.log(obj);
console.log(newArray);
console.log(newArray[0]);
console.log(oldArray);
console.log(oldArray[0]);

objnewArray[0]oldArray[0] 在我的控制台中都产生相同的结果——我想要使用的单个对象。

newArray 但是显示了oldArray 的所有对象,而不仅仅是我认为 obj 包含的对象。 newArray.length == 1。控制台显示:[对象]

oldArray 是我的原始数组。 oldArray.length == 120。控制台显示 [Object, Object, ...]

我尝试了很多事情,没想到会挂断电话。我以为应该是newArray.push(oldArray[0])newArray[0] = oldArray.splice(0,1),但我尝试的一切似乎都在制造同样的问题。

在处理对象数组时有什么特殊技巧吗?

谢谢!

【问题讨论】:

  • newArrayoldArray 是否都声明为数组?
  • 好吧,原来我后来用 newArray 做的一些事情把它搞砸了,但由于某种原因,console.log 显示了新版本的 newArray(我没有其他 console.logs其他任何地方)。事情完美。谢谢大家。

标签: javascript arrays object splice


【解决方案1】:

我已经尝试复制您的问题,这些是我的结果:

var oldArray = ['a','b','c','d'];
var newArray = [];

var obj = oldArray[0]; // store the first value in a new variable
newArray[0] = obj; // push the variable's value to the first index of the new array

console.log(obj);
    // 'a'
console.log(newArray);
    // ['a']
console.log(newArray[0]);
    // 'a' (the same as obj)
console.log(oldArray);
    // ["a", "b", "c", "d"]
console.log(oldArray[0]);
    // 'a'

根据脚本的范围和oldArray 中的数据,这些是正确的行为。要么您的测试用例未正确减少,要么您的问题未反映问题。

由于我使用字符串而不是对象进行测试,因此在您的特定用例中可能会有一些不同的行为,但提供一些关于 oldArray 内容的示例数据将极大地帮助您的事业。

【讨论】:

  • 我确信我的代码还有更多内容。两者都是数组,但是当我测试 typeof 时,我得到了“对象”。这正常吗?
  • 在 JS 中,对象和数组都有 "object" 的类型。可以通过item.length 评估它们之间的差异。对象的长度为undefined,数组为0 或更大。
猜你喜欢
  • 2020-02-13
  • 1970-01-01
  • 2018-07-08
  • 2022-11-22
  • 1970-01-01
  • 2019-03-22
  • 2021-11-13
  • 1970-01-01
  • 2018-04-21
相关资源
最近更新 更多