我有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),但我尝试执行的所有操作似乎都在造成相同的问题。

使用对象数组是否有某种特殊技巧?

谢谢!

最佳答案

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

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内容的示例数据将极大地帮助您解决问题。

关于javascript - JavaScript对象数组无法正确推送,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20062227/

10-16 17:57