在 javascript 中分配对象的内在数组属性

问题描述 投票:0回答:1

我已经想出了一种不同的方法来解决我眼前的问题,但我忍不住向那里的爱好者提出这个问题! 这是一个高级问题。

所以 JavaScript 中几乎所有东西(除了原始类型)都是对象,包括数组。因此,您可以为其分配属性。

var arr = [];
arr[1] = 42;
arr[5] = 666;
arr.firstName = 'ebenezer';
arr.lastName = 'scrooge';

var arr2 = [];
arr2.firstName = 'daffy';
arr2.lastName = 'duck';

var obj2 = {};
obj2.firstName = 'smokey';
obj2.lastName = 'bear';

我将

arr
的数组属性描述为“内在”数组:

arr[1]   // returns 42

所以我的问题是:我可以将内部数组(整个数组而不是任何其他属性)分配给其他对象,例如:

arr2.arrayProp (??something like this??) = arr[];
arr2[1] // want it to return 42
arr2.firstName // want it to return 'daffy'

obj2[](??something like this??) = arr[];
obj2[1] // want it to return 42
obj2.firstName // want it to return 'smokey'

显然,如果我分配整个数组或对象,它只会创建对原始对象及其所有属性的引用。
我想知道是否有一些“幕后”方法可以仅分配数组属性。

我认为答案是“不”,但令我惊讶的是。

javascript arrays properties
1个回答
0
投票

我不确定我是否完全理解您的问题,可能是 X/Y 问题,但也许这些示例对您有用?

将数组元素复制到另一个数组

let arr = [];
arr[1] = 42;
arr[5] = 666;
arr.firstName = 'Ebenezer';
arr.lastName = 'Scrooge';

let arr2 = [];
arr2.firstName = 'Daffy';
arr2.lastName = 'Duck';

// Copy only the numeric indexed elements from arr to arr2 using Object.hasOwn
Object.keys(arr).forEach(key => {
  if (!isNaN(key)) {
    if (Object.hasOwn(arr, key)) {
      arr2[key] = arr[key];
    }
  }
});

console.log(arr2[1]); // Outputs 42
console.log(arr2.firstName); // Outputs 'Daffy'

将数组元素复制到对象

let arr = [];
arr[1] = 42;
arr[5] = 666;
arr.firstName = 'Ebenezer';
arr.lastName = 'Scrooge';


let obj2 = {};
obj2.firstName = 'Smokey';
obj2.lastName = 'Bear';

// Copy only the numeric indexed elements from arr to obj2 using Object.hasOwn
Object.keys(arr).forEach(key => {
  if (!isNaN(key)) {
    if (Object.hasOwn(arr, key)) {
      obj2[key] = arr[key];
    }
  }
});

console.log(obj2[1]); // Outputs 42
console.log(obj2.firstName); // Outputs 'Smokey'

© www.soinside.com 2019 - 2024. All rights reserved.